Test mit teilweise gemergtem Branch
In den vorherigen Schritten haben wir gesehen, wie git branch --merged
und git log main ^branch
mit einem vollständig gemergten Branch funktionieren. Jetzt schauen wir uns an, was passiert, wenn ein Branch nur teilweise gemergt ist, d. h., einige, aber nicht alle seiner Commits wurden in einen anderen Branch integriert.
Zunächst stellen Sie sicher, dass Sie sich im Verzeichnis my-time-machine
befinden:
cd ~/project/my-time-machine
Erstellen wir einen neuen Branch namens partial-feature
und wechseln wir zu ihm:
git branch partial-feature
git checkout partial-feature
Jetzt machen wir zwei Commits auf diesem neuen Branch:
echo "Adding part 1 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 1"
echo "Adding part 2 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 2"
Nach den Commits sollten Sie eine Ausgabe ähnlich dieser sehen:
[partial-feature a1b2c3d] Add part 1
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
[partial-feature e1f2g3h] Add part 2
1 file changed, 1 insertion(+)
Jetzt wechseln wir zurück zum master
-Branch und mergen nur den ersten Commit aus partial-feature
. Dies können wir mit git cherry-pick
tun. Zunächst benötigen wir den Commit-Hash des "Add part 1"-Commits. Sie können diesen finden, indem Sie git log partial-feature
ausführen und den Hash des ersten Commits kopieren.
git checkout master
## Ersetzen Sie <commit_hash> durch den tatsächlichen Hash des "Add part 1"-Commits
git cherry-pick <commit_hash>
Sie sollten eine Ausgabe sehen, die anzeigt, dass das Cherry-Picking erfolgreich war:
[master i1j2k3l] Add part 1
Date: Mon Aug 7 10:05:00 2023 +0000
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
Jetzt verwenden wir erneut git branch --merged master
:
git branch --merged master
Sie sollten master
und feature-branch
aufgeführt sehen, aber nicht partial-feature
. Dies liegt daran, dass partial-feature
noch den "Add part 2"-Commit hat, der nicht in master
gemergt wurde. git branch --merged
listet nur Branches auf, bei denen alle Commits im Zielbranch vorhanden sind.
Schließlich verwenden wir git log master ^partial-feature
:
git log master ^partial-feature
Dieser Befehl zeigt Ihnen die Commits, die in master
enthalten sind, aber nicht in partial-feature
. Es sollten die initialen Commit(s) aus master
, der "Add new feature"-Commit (der jetzt in master
ist) und der "Add part 1"-Commit (den wir cherry-picked haben) angezeigt werden. Der "Add part 2"-Commit sollte nicht angezeigt werden, da dieser Commit nur auf partial-feature
ist.
Dies zeigt, wie git branch --merged
und git log main ^branch
Ihnen helfen können, den Merge-Status Ihrer Branches zu verstehen, auch wenn nur einige Commits integriert wurden.