2016-07-19 9 views
1

Was ist der beste Weg, um Commits von GitHub zu entfernen, ohne meine lokalen Repositories zu beeinträchtigen, da ich einige Commits gemacht habe, die ich behalten möchte?GitHub - Push-Commits entfernen, ohne das lokale Repository zu beeinflussen

Github-Repository hat zwei falsche Commits, die ich entfernen möchte, während ich die Commits in meinem lokalen Repository aufbewahre.

+0

Arbeiten an einem separaten Zweig. –

+0

Erstellen Sie einen neuen Zweig für die Commits, die Sie behalten möchten (in Ihrem lokalen Repository) mit 'git branch -b KeepThisBranch SHAofCommitToKeep'. Entfernen Sie dann die Commits wie gewohnt aus dem alten Zweig in GitHub. – Gregg

Antwort

4

den aktuellen Repository Zustand Unter der Annahme, ist dies:

server:   A---B---C---D 
          ^master 

workstation: A---B---C---D 
          ^HEAD 
          ^master 
          ^origin/master 

Und der gewünschte Zustand ist dies:

server:   A---B 
        ^master 

workstation: A---B---C---D 
          ^HEAD 
          ^master 
        ^origin/master 

Dann, was Sie können dorthin tun, ist dies:

$ git push --force origin bbbbbbbb:master 

Dabei ist bbbbbbbb der Commit-Hash von B.

Hinweise:

  • Wie bei allen --force, seien Sie vorsichtig. Sie können sich an einen Ort begeben, der schwer zu erreichen ist.
  • Stellen Sie sicher, dass alle Ihre Teammitglieder wissen, was Sie tun. Sie können C und D versehentlich wieder in das Repository verschieben, wenn sie ihr eigenes Repository nach dem Drücken nicht korrekt aktualisieren.
  • Wenn andere Tags/Zweige auf C und D verweisen, bleiben sie dort zugänglich.
  • Commits C und D und alle Änderungen in ihnen können nicht sofort gelöscht werden. Sie werden zu einem unbestimmten Zeitpunkt in einem Garbage-Collection-Pass entfernt.
+0

Beat mich dazu! Beachten Sie auch, dass Sie Verknüpfungen wie 'HEAD ~ 2' verwenden können, um auf das Commit-Zwei im Verlauf zurückzugreifen. –

Verwandte Themen