2017-08-24 1 views
1

Ich betreibe mehr in diesem Szenario oft, dass ich möchte: Wie man einen GIT-Merge "wegbläst" und frisch startet?

  • I
  • bearbeiten eine Datei
  • gehen, um einen Zweig Besuche

  • sagt mir Zweige haben abgezweigt zu schieben, und ich brauche 100 Änderungen verschmelzen

Dies passiert normalerweise, wenn jemand ein Update direkt bevor ich tue.

Jetzt weiß ich, die beste Lösung ist, dass ich mich an pull vor dem Drücken erinnern muss. Aber wenn ich es vergesse, bleibe ich bei GIT und sage mir ständig, dass ich alles verschmelzen muss.

Ich habe versucht git checkout . zu 'löschen' und neu zu starten, aber das funktioniert nicht. Ich habe auch versucht, die Kasse zu erzwingen. In jedem Fall heißt es, ich habe noch Merges zum Commit.

Gibt es einen einfachen Weg, um einfach meinen aktuellen Zustand zu nehmen und wegzublasen, damit ich die eine Datei erneut auschecken und neu bearbeiten kann?

+1

'git reset --hard KOPF ^' – marcusshep

+0

https://xkcd.com/1597/ –

+0

@DrEval yep. das könnte wahrscheinlich die Antwort auf * all * git Fragen sein. :) –

Antwort

1

Sie müssen git reset HEAD~1 ausführen, bevor Sie git checkout . ausführen. Dadurch wird Ihr letzter Commit "rückgängig gemacht" und die Änderungen befinden sich in einer "Pre-Add" -Phase. Was du dann mit der Kasse wegbläst.

Alternativ können Sie beide Routinen in einem Befehl ausführen.

git reset --hard HEAD^ 

Das in der letzten Folge wird verpflichten rückgängig gemacht werden und HEAD zum vorherigen hingewiesen werden, verpflichten, bevor Sie Änderungen vorgenommen. Am wahrscheinlichsten wird das Engagement sein, mit dem Ihre Kollegin ihre Arbeit begonnen hat.

Dies muss passieren, bevor Sie Ihre Kollegen commit (s) ziehen.

+0

ah ... schön! und dieser Befehl macht eigentlich Sinn (Reset!). Das hat den Trick gemacht! –

2

Wenn ich die Frage verstehen, denke ich, was Sie wirklich meinen, ist:

  • ich einen Zweig Besuche
  • einige Zeit vergeht ...
  • bearbeiten eine Datei
  • etwas mehr Zeit vergeht ...
  • gehen Sie zu drücken
  • Uhr sagte Zweige haben sich auseinander und ich muss 100 Änderungen zusammenführen

Happens auf aktive Projekte die ganze Zeit. Es ist nichts falsch daran, an diesem Punkt einen Pull auszuführen, der automatisch eine Zusammenführung ausführt. Wenn keine Konflikte mehr bestehen, können Sie Push ausführen (falls Konflikte auftraten, müssen Sie diese früher oder später beheben. trotzdem).

Aber einige Teams mögen nicht, wie die Geschichte danach aussieht (auf einem aktiven Projekt kann das außer Kontrolle geraten). Eine andere Lösung ist eine Fetch-and-Rebase. Das wird Ihre Commits finden, sie rückgängig machen, die neuen Commits holen und Ihre Commits erneut anwenden.Dann können Sie drücken, und die Geschichte wird als eine Zeile angezeigt, auf Kosten der Genauigkeit (Ihre Commits fanden zu einem anderen Zeitpunkt in der Geschichte statt).

+0

Das ist auch eine gute Antwort. Klingt so, als ob ich die Fusionen einfach passieren lassen sollte. Das heißt, ich bin ein Front-End-Entwickler und ich ändere normalerweise nur eine Zeile CSS oder ein paar Zeilen HTML in einer Datei, also denke ich, dass ich einfach die Idee mag, leichtfertig zu gehen und nur Dinge neu zu setzen und zu setzen in dieser einen Veränderung. Ja, GIT schüchtert mich ein. :) –

+0

Erwarten Sie, dass der 'Push' fehlschlägt, das ist normal, machen Sie' fetch', gefolgt von 'rebase' und' push' (obwohl Sie das anfängliche 'push' überspringen können). Sei vorsichtig mit einem Hard Reset. Sie können Ihre Änderungen verlieren (das ist der Zweck). – rustyx

Verwandte Themen