Wie soll ich mich bewegen, änderungen von einem commit an einen anderen?
Habe ich zwei commits auf dem gleichen ast, ein Recht nach dem anderen. Ich Hinzugefügt-änderungen in Datei A, um der erste zu Begehen, und dann machte ich einige änderungen an anderen Dateien und dann auf eine weitere verpflichten. Jetzt möchte ich die änderungen in Eine Datei auf der zweiten commit eher als die erste. Was ist der eleganteste Weg?
- Sie können überprüfen, git rebase hier
- Diese Frage ist ein Spezialfall des "Squash-meine letzten X begeht zusammen mit Git" stackoverflow.com/questions/5189560/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie klein verpflichtet, und verpflichtet sich, Sie sollten immer klein sein, im git, ist der einfachste Weg, um
git reset HEAD^^
und dann einfach wieder. Beachten Sie, dass keine Lösung für dieses beinhaltet die Geschichte umzuschreiben, und wenn Sie bereits geschoben, diese begeht, irgendwo, sollten Sie das nicht tun, es sei denn, Sie wissen, was Sie tun.Schrieb ich ein Skript, erfüllen diesen Zweck. Sie können die Kasse heraus, dass es hier.
Mithilfe des Skript-es wäre so einfach wie:
Ziemlich eingebunden beantworten, aber im Grunde haben Sie Squash und Stellungswechsel.
Siehe hier: http://davidwalsh.name/squash-commits-git
Andere Lösung für dieses problem
git rebase -i <commit before commits to be reordered>
(git rebase -i master
in den meisten Fällen)ddp
während auf der Linie, sollte move down)Ich weiß, das ist eine alte Frage, aber ich hatte das exakt gleiche Anfrage und ich gerade herausgefunden, der beste Weg, um dieses Problem zu beheben: Sie brauchen zur Nutzung von interaktiven rebase und wählen Sie "edit" für die beiden commits, die Sie verschieben möchten eine änderung aus und zu.
Zum Beispiel lassen Sie sagen, Sie haben 3 verpflichtet:
Nun, wenn Sie möchten, dass der Commit-B enthalten nur die file2.txt Schöpfung, aber nicht die file1.txt edition, die es werden sollten, in Commit C,
git rebase -i
zeigt dies:Wenn ich ersetzen Sie "pick" mit "Bearbeiten" oder "e" für die Commit-B und Commit C und schließe meine editor, git halt auf dem zweiten commit und lassen Sie mich zu ändern, meine änderungen:
... Und das ist es.
Kümmern zu speichern irgendwo die Zeile(N) entfernen von ersten commit in die zweite. Es kann in die Zwischenablage, text-Datei, etc. Ich denke, es sollte möglich sein, auf die Sie sich verlassen
git stash
auch, aber wenn es eine einfache änderung ist es einfacher zu halten, es in die Zwischenablage.In der, wahrscheinlich, unwahrscheinlich, Ereignis, das Sie gerade erstellt haben diejenigen commits rückgängig machen die zweite Begehung mit
git reset HEAD^
und fügen Sie dann die änderungen an den ersten commit mitgit commit --amend
.In der eher Veranstaltung, die Sie bewegt haben und die verpflichtet wurden, an einem gewissen Punkt in der Vergangenheit, rebasierung ist Ihre beste option. Ohne zu wissen, Ihre genaue situation, unter Berufung auf eine Referenz erklärt, dass es gut ist wohl am besten.
In der ersten und zweiten Ereignis, das Pro Git-Buch der Abschnitt über die Geschichte umzuschreiben erläutert die Optionen gut-sowohl, wenn Sie verwendet werden sollte und Wann Vorsicht verwendet werden sollten.
6.4 Git-Tools - Die Geschichte Umzuschreiben