it-swarm.com.de

Wie kann ich ein github-Repository auf ein bestimmtes Commit zurücksetzen?

Mein Github hat jetzt 100 Commits. Ich muss das Repository zurücksetzen, um den Commit 80 auszuführen und alle nachfolgenden zu entfernen.

Warum? Dieses Repo ist für das Zusammenführen verschiedener Benutzer gedacht. Eine Reihe von Zusammenführungen ging aufgrund übermäßiger Bearbeitung von mir aus. Dies war auf eine falsche Kennzeichnung meiner entfernten Niederlassungen zurückzuführen, bei denen 3 Entwickler als untereinander gekennzeichnet wurden. Ich muss auf diesen Punkt zurücksetzen und dann nach vorne ziehen.

Ich wollte, wie in diesem Beispiel, rebasieren: Wie kann ich ein Commit für GitHub entfernen?

Git möchte jedoch, dass ich viel Konfliktmanagement durchführe. Gibt es einen einfacheren Weg?

371
git reset --hard <old-commit-id>
git Push -f <remote-name> <branch-name>

Hinweis: Wie in den folgenden Kommentaren beschrieben, ist die Verwendung von in einer kollaborativen Umgebung gefährlich: Sie schreiben den Verlauf.

785
jtdubs

Ein anderer Weg: 

Überprüfen Sie den Zweig, den Sie wiederherstellen möchten, und setzen Sie dann Ihre lokale Arbeitskopie auf den Commit zurück, den Sie auf dem Remote-Server als letztes verwenden möchten (alles, was danach passiert, wird auf Wiedersehen). Dazu habe ich in SourceTree mit der rechten Maustaste auf das geklickt und "BRANCHNAME auf dieses Commit zurücksetzen" ausgewählt. 

Navigieren Sie dann zum lokalen Verzeichnis Ihres Repositorys und führen Sie den folgenden Befehl aus: 

git -c diff.mnemonicprefix = false -c core.quotepath = false Drücken Sie -v -f --tags REPOSITORY_NAME BRANCHNAME: BRANCHNAME 

Dadurch werden alle Commits nach dem aktuellen in Ihrem lokalen Repository gelöscht, jedoch nur für diesen einen Zweig. 

19
CommaToast

Um das letzte Commit rückgängig zu machen, mache ich folgendes:

Zuerst:

git log

holen Sie sich die neueste SHA ID, um sie rückgängig zu machen.

git revert SHA

Dadurch wird ein neues Commit erstellt, das genau das Gegenteil Ihres Commits darstellt. Dann können Sie dieses neue Commit pushen, um Ihre App auf den vorherigen Stand zu bringen, und Ihr Git-Verlauf zeigt diese Änderungen entsprechend. 

Dies ist gut für eine sofortige Wiederholung von etwas, das Sie gerade begangen haben, was für mich häufiger der Fall ist. 

Als Mike meinte, kannst du auch folgendes tun:

git revert HEAD
15
Nick Res

Bei Zweigaktualisierungen von Master stelle ich fest, dass ich manchmal überklicke, und dass der Zweig ebenfalls mit dem Master verbunden wird. Einen Weg gefunden, das ungeschehen zu machen.

Wenn Ihr letzter Commit eine Verschmelzung war, ist etwas mehr Liebe erforderlich:

git revert -m 1 KOPF

2
Richard Nader

In github können Sie den entfernten Zweig in der github-Benutzeroberfläche auf der Registerkarte "Zweige" ganz einfach löschen. Sie müssen sicherstellen, dass Sie die folgenden Einstellungen entfernen, um den Zweig löschbar zu machen:

  1. Kein Standardzweig
  2. Keine Eröffnungsabfragen.
  3. Der Zweig ist nicht geschützt.

Erstellen Sie es jetzt in Ihrem lokalen Repository neu, um auf den vorherigen Festschreibungspunkt zu zeigen. und fügen Sie es zurück zu Remote-Repo.

git checkout -b master 734c2b9b   # replace with your commit point

Dann schieben Sie den lokalen Zweig auf Remote

git Push -u Origin master

Fügen Sie den standardmäßigen Zweig- und Zweigschutz usw. hinzu. 

0
Jianwu Chen