2015-07-26 14 views
7

Sto provando a ripristinare un repository Git su SourceForge. Ho provato quanto segue:Force Git push su SourceForge

git reset --hard 9ac2e31ca4a155d4c36780b4329626045a7f40ed 
HEAD ist jetzt bei 9ac2e31 Fix warnings 


git push -f origin master 
Total 0 (delta 0), reused 0 (delta 0) 
remote: error: denying non-fast-forward refs/heads/master (you should pull first) 
To ssh://[email protected]/p/project/code 
! [remote rejected] master -> master (non-fast-forward) 
error: Fehler beim Versenden einiger Referenzen nach 'ssh://[email protected]/p/project/code' 

Come posso ignorare il ramo master per un repository Git SourceForge a distanza?

+0

Avete la proprietà denyNonFastforwards impostata come falsa nel file di configurazione, per caso? – Juan

+0

Forse. Non lo so. Ho trovato un [problema su SourceForge] (https://sourceforge.net/p/forge/site-support/9558/) su questo problema. –

+0

Potrebbe essere possibile eliminare il ramo remoto e quindi spingere il master come un branhc completamente nuovo. –

risposta

4

Poiché denyNonFastforwards è una configurazione lato server, è necessario accedere al repository sul lato SourceForge in qualche modo.

Come il tuo ticket mentions, questo è fatto con un interactive shell service, ma supponiamo che tu possa usare ssh per aprire una shell sicura.

L'esecuzione di "sf-help --scm" nella shell mostrerà i percorsi pronti contro termine.
Basta modificare leggermente lo denyNonFastforwards = true in false, quindi premere e quindi reimpostarlo su true (per sicurezza).

Tuttavia, un messaggio del tipo "ssh: connect to host shell.sourceforge.net port 22: Connection refused" potrebbe significare che:

  • Potrebbe essere bloccata sul lato client (verificare se è possibile ssh ad altri servizi, come GitHub, anche se ha vinto' t essere una sessione interattiva)
  • o potrebbe essere il risultato di un guasto sul lato SourceForge (ma il loro status page doesn't report any recent incident)

mus e-controllare il SourceForge SSH documentation.

2

Ecco le istruzioni dettagliate per connettersi al proprio account Sourceforge e modificare il file config e abilitare gli aggiornamenti non-fast-forward.

È possibile modificare denyNonFastForwards di un progetto standard Sourceforge dal computer con i seguenti comandi:

  • Connettersi al tuo account SSH utilizzando Interactive Shell con il comando ssh -t [email protected] create. Si noti che l'URL è diverso da quello del progetto:
$ ssh -t [email protected] create 
The authenticity of host 'shell.sourceforge.net (ip)' can't be established. 
ECDSA key fingerprint is SHA256:key 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added 'shell.sourceforge.net,ip' (ECDSA) to the list of known hosts. 
Password: 
Requesting a new shell for "user" and waiting for it to start. 
queued... creating... starting... 
This is an interactive shell created for user user,users 
Use the "timeleft" command to see how much time remains before shutdown. 
Use the "shutdown" command to destroy the shell before the time limit. 
For path information and login help, type "sf-help". 
  • Trova il file config utilizzando sf-help --scm o pwd, dovrebbe essere situato nella cartella /home/git/p/myproject/code.git/.

  • leggere il file config per controllare denyNonFastforwards stato, si è infatti impostata su true:

[[email protected] code.git]$ cat config 
    [core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = true 
     sharedrepository = 2 
    [receive] 
     denyNonFastforwards = true 
  • Inizia vi per modificare il file, cambiare true a false:
[[email protected] code.git]$ vi config 
    [core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = true 
     sharedrepository = 2 
    [receive] 
     denyNonFastforwards = false 
    ~ 
    ~ 
          1,1   All 
  • Digitare :w per salvare la modifica e :q per uscire da vi.

L'errore denying non-fast-forward non deve essere più visualizzato.