Git: Stufe in Commit, was ist der richtige Workflow?
Frage
Ich habe gerade ein großes Stück Code habe ich in mehreren separaten Commits begehen wollen.
Also ich relevante Teile inszenieren kann, verpflichten, Bühne, verpflichten, ... und so weiter, bis ich alle meine Änderungen verpflichtet.
Der fehlende Teil ist, wie kann ich feststellen, ob ich spaltete sich die correcty begehen.
D. h ob der Teil, der in Staging-Bereich zumindest compiliert ist?
Um das zu tun muß ich irgendwie meine Arbeit Baum bringen mit dem Index (Staging-Bereich) synchron zu sein, ohne die Änderungen zu verlieren, später begangen werden.
Was ist der rechts Weg, es zu tun?
Was ist die schnellste Art und Weise, es zu tun?
Update:
Wie es mit magit zu tun?
Lösung
Sie könnte es tun mit:
$ git branch task1 # first set of commit to do
Ein Zwischen Zweig kann nützlich sein, einige Zwischen Commits aufzuzeichnen, wenn Sie langsam einige Inhalte in den Index hinzufügen.
Dann versuchen Sie eine interaktive Sitzung für das Hinzufügen genau das, was Sie wollen:
$ git add -i
Fügen Sie jedes Mal, wenn Sie überprüfen möchten, was Sie hinzugefügt haben:
$ git stash --keep-index
Wenn es kompiliert, git commit
Ihre aktuelle Arbeit, und wenn task1
noch nicht abgeschlossen ist, git stash pop
die volle Arbeitsbaum und wiederholen wiederherzustellen.
Sobald task1
vollständig gebacken, können Sie trimmen alle, die 'task1
' Commits und die ganze Arbeit im Master zusammen:
$ git checkout master
$ git merge task1
$ git branch -D task1 # no need for that intermediate branch
Wenn Sie die Geschichte einiger wichtiger task1
Commits sparen möchten, können Sie zunächst task1
auf der Master-rebase, bevor master
in task1
Verschmelzung (vorspulen)
Schließlich, wenn Ihre Stash noch einige unfertige enthält, wiederholen Sie den ganzen Prozess für task2
.
Andere Tipps
Hier ist eine magit Weise, die ich verwende:
- machen Sie Ihren Index für die erste mit magit "u" oder "s" auf der Bühne oder unstage Hunk / files / Region begehen. (Dies kann mit git gui erfolgt auch). Sobald Ihr Index bereit ist, zu begehen:
- begehen mit "c", schreiben Sie Ihre Commit-Nachricht, Ctrl-C Strg-C zu begehen.
- Stash mit "z", gefolgt von << >> Enter, dies alles verstauen Sie Ihre Änderung. Um wieder Ihre Änderungen können Sie „A“ verwenden, während Sie den Mauszeiger auf dem richtigen Stash Eintrag ist.
Ihre Tests machen zu überprüfen, ob Ihr begehen gut ist. Wenn eine Änderung vorgenommen werden muss, wiederholen wie vorher, aber drücken Sie Strg-C Strg-A vor commiting während in dem Bildschirm die Nachricht zu begehen. Dies wird ändern (komplett) Ihre letzte verpflichten, anstatt eine neue zu erstellen.
Beachten Sie, wenn Sie herausfinden später, dass einiger Code kommen sollte, ändert ein Commit das ist vor dem letzten Sie getan haben, sollten Sie den Code alles daran setzen, es selbst ist (mit einer temporären Zusammenfassung), und klappen sie in den richtigen Dank verpflichten auf „L“ Bildschirm Zugriffsprotokoll, zeigen Sie den Mauszeiger dann vor beide begehen Sie zerquetschen möchten, und drücken Sie „E“ ein „git rebase -i“ Session zu starten. Nachbestellung die Commits so dass die temporäre Zusammenfassung zu „fix“ ist das Ziel verpflichten. Beenden Sie den Puffer und TADA. Alles getan ist.