[LINUX] Ich habe zwei Möglichkeiten ausprobiert, um mehrere Commits mit Git zu kombinieren
Als ich ein Commit mit Rebase zusammenstellte, verursachte ich eine zierliche oder schlampige Angelegenheit.
Mir wurde geraten, dass "Patch verwendet werden sollte, um mehrere Commits gleichzeitig wiederzugeben", aber als ich googelte, wurden viele Methoden zum Kombinieren mit Rebase eingeführt.
Ich habe den Unterschied zwischen diesen beiden Methoden nicht verstanden, daher werde ich ihn mit meiner eigenen Vorsicht aufzeichnen.
Überblick über die beiden Methoden
1. So wenden Sie eine Patch-Datei an
So kombinieren Sie mehrere Commits zu einem einzigen Diff
$ git diff -p <Quellzweig> <Zielzweig >> a.patch
Gibt den Unterschied zwischen den beiden Zweigen als Patch-Datei aus.
- Der Name der Patch-Datei ist beliebig
$ patch --dry-run -p1 < a.patch
Überprüfen Sie die Differenzdatei mit einem Probelauf (Testlauf).
$ patch -p1 < a.patch
Wenn Sie es tatsächlich nach Überprüfung des Unterschieds einschenken, befindet es sich im Zustand vor "git add".
- (+ Α)
$ git diff <Quellzweig> <Zielzweig> | Patch -p1
Auf diese Weise können Sie sie auch alle gleichzeitig in einer Zeile ausführen.
2. Wie man Rebase zusammenstellt
$ git rebase -i HEAD ~ (Anzahl der Commits, die von HEAD zurückgehen)
Bearbeiten und speichern Sie nach dem Start von vim die Festschreibungsnachricht und die Reihenfolge der Festschreibungen.
$ git push -f origin <branch>
** Seien Sie vorsichtig mit erzwungenen Stößen! !! ** ** **
-
- Der Commit-Verlauf vor dem Rebase wurde bereits verschoben. Wenn während des Rebases ein Konflikt auftritt, führen Sie die folgenden Schritte aus.
$ git co --ours(--theirs)
Wenn Sie nicht nur die Änderungen in einem Zweig gleichzeitig anwenden können, müssen Sie sie stetig bearbeiten ...?
$ git add .
$ git rebase --continue
(Rebase nach Konfliktlösung fortsetzen)
→ Wenn Sie fertig sind, wiederholen Sie erneut $ git push -f origin
Referenzseite
Eine kleine chaotische Geschichte mit Rebase
Was ist fehlgeschlagen
(@Persönlicher Zweig) $ git merge develop
$ git rebase -i HEAD~Fassen Sie Commits mit xx zusammen
$ git push -f origin <branch>
Ich habe die obigen Schritte unternommen. Was wird passieren?
... Es war schlecht, $ git rebase -i HEAD ~ xx
zu verwenden, wenn zwischen den Commits, die Sie zusammenstellen wollten, wie in diesem Fall ein Commit von jemand anderem als Ihnen stattgefunden hat.
Wenn Sie es mit $ git rebase -i HEAD ~ xx
zusammenfügen, werden auch andere Personen erneut verpflichtet.
Zu diesem Zeitpunkt wird es als Ihr eigenes Commit zusammengefasst, sodass Sie sich am Ende selbst verpflichten.
Ich musste zuerst nur meine eigenen Commits zusammenstellen und dann die Entwicklungszweige zusammenführen.
(Siehe hier)
Zusammenfassung
Allgemeines
- ** Sei vorsichtig mit
$ git push -f origin <branch>
! !! ** ** **
- Wenn Sie einen Zweig mit verteilten und anderen Commits neu gründen
Setzen Sie das Commit eines anderen erneut als Ihr eigenes fest.
- So wenden Sie eine Patch-Datei an
→ Da das Festschreibungsprotokoll des persönlichen Zweigs nicht geändert wird,
Kann nur verwendet werden, um persönliche Zweigstellenaktualisierungen in großen Mengen auf den Entwicklungszweig anzuwenden
= Bild von "Extrahieren von Unterschieden, die für einzelne Zweige eindeutig sind, als ein Unterschied und Anhängen an das erste Commit des Entwicklungszweigs"
- Zu diesem Zeitpunkt bleibt das Festschreibungsprotokoll des persönlichen Zweigs verteilt.
Ansatz
- (Wenn Sie in diesen Fall fallen) Es ist nicht gut, so wie es ist zusammenzuführen.
→ Wenn Sie dies tun, können Sie damit umgehen, indem Sie einen anderen Zweig neu erstellen und Ihre Änderungen aus dem Commit extrahieren.
- Das Bild des Wechsels der Wurzel eines Zweigs mit "$ git rebase".
- Wenn Ihre Änderungen wie folgt verstreut sind:
Es scheint, dass es schnell ist, einen anderen Zweig neu zu schneiden und nur für sich selbst zu pflücken.
→ Kann als Wischtuch verwendet werden, wenn Sie einen Fehler im Git-Betrieb machen ...
- Wenn Sie auch "$ git reset" verwenden können, ist es einfacher zu korrigieren, wenn Sie einen Fehler machen.
→ Es ist sogar noch besser, wenn Sie die Optionen "--soft", "--hard", "--mixed" kennen.
- Kasse zum Zweig, der zusammengeführt werden soll
→ Führen Sie einen persönlichen Zweig zusammen, der das Commit eines anderen manipuliert hat
→ Sie können auch nur die Änderungen mit
$ git reset HEAD ^
extrahieren, ohne zu drücken
(Es besteht die Möglichkeit vieler Konflikte ...)