2015-07-26 12 views
7

Ich versuche, ein Git-Repository auf SourceForge Rollback. Ich habe versucht, die folgende:Force Git Push auf 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' 

Wie kann ich den master Zweig für eine Remote-Source Git-Repository außer Kraft setzen?

+0

Haben Sie die Eigenschaft denyNonFastforwards in der Konfigurationsdatei versehentlich auf false gesetzt? – Juan

+0

Vielleicht. Ich weiß es nicht. Ich habe ein [Problem auf SourceForge] (https://sourceforge.net/p/forge/site-support/9558/) zu diesem Problem gefunden. –

+0

Sie können möglicherweise die Remote-Zweig löschen und dann Master als eine komplett neue Branhc schieben. –

Antwort

4

Da denyNonFastforwards eine serverseitige Konfiguration ist, müssen Sie irgendwie auf Ihr Repository auf der SourceForge-Seite zugreifen.

Als Ihre ticket mentions wird dies mit einer interactive shell service gemacht, aber das setzt voraus, dass Sie mit ssh eine sichere Shell öffnen können.

Das Ausführen von "sf-help --scm" in der Shell zeigt Ihnen Ihre Repo-Pfade.
Nur zwicken Sie die denyNonFastforwards = true zu false für ein bisschen, tun Sie Ihre Push und setzen Sie es zurück auf true (aus Sicherheitsgründen).

jedoch eine Meldung wie „ssh: connect to host shell.sourceforge.net port 22: Connection refused“ könnte das bedeuten:

  • Es ist auf der Client-Seite blockiert werden könnte (wenn Sie auf andere Dienste ssh können, wie GitHub, auch wenn es gewonnen‘ t sein, eine interaktive Sitzung)
  • oder es könnte das Ergebnis eines Ausfalls auf Sourceseite (aber ihre status page doesn't report any recent incident)

Dou sein e-check die SourceForge SSH documentation.

2

Hier sind detaillierte Anweisungen zum Herstellen einer Verbindung mit Ihrem Sourceforge-Konto und zum Ändern der config-Datei und Aktivieren von non-fast-forward Updates.

Sie können mit den folgenden Befehlen denyNonFastForwards ein Standard-Source Projekt von Ihrem Computer ändern:

  • Verbindung zu Ihrem SSH Konto Interactive Shell mit dem Befehl ssh -t [email protected] create. Beachten Sie, dass die URL von dem Ihres Projekts unterscheidet:
$ 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". 
  • Suchen Sie die Datei config mit sf-help --scm oder pwd, sollte es in Ordner /home/git/p/myproject/code.git/ befinden.

  • Lesen Sie die config Datei denyNonFastforwards Status zu überprüfen, ist es in der Tat auf true gesetzt:

[[email protected] code.git]$ cat config 
    [core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = true 
     sharedrepository = 2 
    [receive] 
     denyNonFastforwards = true 
  • starten vi die Datei zu ändern, ändern true zu false:
[[email protected] code.git]$ vi config 
    [core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = true 
     sharedrepository = 2 
    [receive] 
     denyNonFastforwards = false 
    ~ 
    ~ 
          1,1   All 
  • Geben Sie :w ein, um die Änderung zu speichern, und :q, um vi zu beenden.

Der Fehler denying non-fast-forward sollte nicht mehr angezeigt werden.