Führen Sie aus, um Dateien von einem Zweig selektiv in einen anderen Zweig zusammenzuführen
git merge --no-ff --no-commit branchX
Wo branchX
ist der Zweig, von dem Sie in den aktuellen Zweig zusammenführen möchten?
Mit dieser --no-commit
Option werden die von Git zusammengeführten Dateien bereitgestellt, ohne sie tatsächlich festzuschreiben. Dies gibt Ihnen die Möglichkeit, die zusammengeführten Dateien nach Belieben zu ändern und sie dann selbst festzuschreiben.
Je nachdem, wie Sie Dateien zusammenführen möchten, gibt es vier Fälle:
1) Sie möchten eine echte Zusammenführung.
In diesem Fall akzeptieren Sie die zusammengeführten Dateien so, wie Git sie automatisch zusammengeführt hat, und schreiben sie dann fest.
2) Es gibt einige Dateien, die Sie nicht zusammenführen möchten.
Sie möchten beispielsweise die Version im aktuellen Zweig beibehalten und die Version in dem Zweig, aus dem Sie zusammenführen, ignorieren.
Führen Sie Folgendes aus, um die Version im aktuellen Zweig auszuwählen:
git checkout HEAD file1
Dadurch wird die Version von file1
im aktuellen Zweig abgerufen und die file1
von Git zusammengestellte Version überschrieben .
3) Wenn Sie die Version in branchX möchten (und keine echte Zusammenführung).
Lauf:
git checkout branchX file1
Dadurch wird die von Git automatisch zusammengeführte Version von file1
in abgerufen branchX
und überschrieben file1
.
4) Der letzte Fall ist, wenn Sie nur bestimmte Zusammenführungen auswählen möchten file1
.
In diesem Fall können Sie die geänderte file1
Version direkt bearbeiten, auf die gewünschte Version aktualisieren file1
und dann festschreiben.
Wenn Git eine Datei nicht automatisch zusammenführen kann, wird die Datei als "nicht zusammengeführt" gemeldet und eine Kopie erstellt, in der Sie die Konflikte manuell lösen müssen.
Um dies anhand eines Beispiels weiter zu erläutern, nehmen wir an, Sie möchten branchX
in den aktuellen Zweig einbinden:
git merge --no-ff --no-commit branchX
Anschließend führen Sie den git status
Befehl aus, um den Status geänderter Dateien anzuzeigen.
Zum Beispiel:
git status
# On branch master
# Changes to be committed:
#
# modified: file1
# modified: file2
# modified: file3
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: file4
#
Wo file1
, file2
und file3
sind die Dateien, die git erfolgreich automatisch zusammengeführt hat.
Dies bedeutet, dass Änderungen in master
und branchX
für alle drei Dateien ohne Konflikte miteinander kombiniert wurden.
Sie können prüfen , wie die Zusammenführung , indem Sie das getan wurde git diff --cached
;
git diff --cached file1
git diff --cached file2
git diff --cached file3
Wenn Sie eine Zusammenführung als unerwünscht empfinden, können Sie dies tun
- Bearbeiten Sie die Datei direkt
- speichern
git commit
Wenn Sie nicht zusammenführen file1
und die Version im aktuellen Zweig beibehalten möchten
Lauf
git checkout HEAD file1
Wenn Sie nicht zusammenführen möchten file2
und nur die Version in möchtenbranchX
Lauf
git checkout branchX file2
Wenn Sie file3
automatisch zusammengeführt werden möchten , tun Sie nichts.
Git hat es zu diesem Zeitpunkt bereits zusammengeführt.
file4
oben ist eine fehlgeschlagene Zusammenführung von Git. Dies bedeutet, dass in beiden Zweigen Änderungen in derselben Zeile auftreten. Hier müssen Sie die Konflikte manuell lösen. Sie können die Zusammenführung verwerfen, indem Sie die Datei direkt bearbeiten oder den Befehl checkout für die Version in dem Zweig ausführen file4
, der Sie werden möchten .
Schließlich nicht vergessen git commit
.