2012-11-21 4 views
8

Kurzversion zu meisternein git branch Stellen gleich wieder

Was ist der einfachste Weg ist es, einen Zweig gleich master wieder zu machen, keine Unterschiede zu verwerfen? Bis jetzt habe ich einfach git branch -D wip, gefolgt von git checkout -b wip verwendet, aber das scheint ein bisschen albern.

Motivation

ich einen wip Zweig neben meinem master Zweig oft haben, für die Arbeit in progress ". Manchmal wird die Arbeit an einem solchen Zweig "zurückgelassen" und wenn ich es wiederfinde, finde ich, dass ich es nicht mehr will. Diese Wiederentdeckung passiert oft, wenn ich den Zweig verwenden möchte, um einen neuen Satz von 'in Arbeit' zu speichern, und ich finde, ich möchte einfach alle Unterschiede mit master verwerfen, so dass der neue 'in Arbeit' obenauf passt. Das Finden der Unterschiede lohnt sich nicht: Die oben beschriebene Lösung funktioniert gut für mich. Gibt es bessere Lösungen für diesen Anwendungsfall?

Antwort

7

Wenn Sie wirklich den vorherigen Zweig wegzublasen mit diesem Namen werden sollen, und ein neues erstellen Sie nur verwenden:

git checkout -B wip master 

Mit der Kapital Version statt -b verursachen git auf den Namen wechseln Verzweigen und setzen Sie es auf den neuen Startpunkt zurück, der als letztes Argument benannt ist. Wenn Sie sich gerade auf dem gewünschten Startpunkt befinden, können Sie das letzte Argument (master hier) weglassen, standardmäßig wird HEAD verwendet.

10

versuchen Sie dieses in Ihrer Branche:

git reset --hard master 

Dies wird Ihre Filiale identisch Master machen, entfernen Sie alle verpflichtet Sie getan haben, und entsorgen Sie alle Dateien im Staging-Bereich.

+0

Wenn dieser Anwendungsfall auftritt, habe ich in der Regel nicht festgeschriebene Arbeit in Arbeit. An diesem Punkt kann ich oft den 'wip'-Zweig nicht auschecken, weil das zu einem 'Fehler' führt: Ihre lokalen Änderungen an den folgenden Dateien würden beim Auschecken überschrieben:'. Natürlich kann ich meine Arbeit an "Master" machen, dann checkle 'wip', dann' git reset --hard master', dann checkout 'master' und' reset --hard HEAD^', aber das ist nicht viel kürzer als das Zerstören den Zweig und einen neuen erstellen. – Confusion

+0

Warum sind Sie auf Master, wenn Sie an Wip arbeiten? – Intrepidd

+1

Sie können vermeiden, in diesen Situationen zu committen, indem Sie 'git stash' verwenden, um Ihre Änderungen zu speichern, und' git stash pop', um sie wiederherzustellen. – jszakmeister