HOWTO · Git

Bestimmten Commit vom Git-Repository abrufen

In diesem Artikel wird erläutert, wie Sie ein bestimmtes Commit aus dem Remote-Git-Repository abrufen können.

Auf dieser Seite

Um die Änderungen eines einzelnen Commits auf deinen aktuellen Branch zu übernehmen, rufst du zuerst die Remote-Historie ab und verwendest dann git cherry-pick <commit-id>. Erstelle einen Branch an diesem Commit, wenn du seinen historischen Stand untersuchen oder von dort aus weiterarbeiten möchtest. Verwende git merge oder git pull, wenn du die Branch-Historie integrieren willst, zu der auch frühere Commits gehören können. Mit git reset verschiebst du deinen aktuellen Branch auf einen früheren Stand.

Die passende Operation für einen bestimmten Commit auswählen

Diese Operationen haben unterschiedliche Auswirkungen. git cherry-pick übernimmt die Änderung eines ausgewählten Commits als neuen Commit auf deinem aktuellen Branch. Wenn du einen Branch an einem Commit erstellst, beginnst du die Arbeit von diesem Snapshot aus. Beim Zusammenführen eines Commits wird dessen erreichbare Historie übernommen, soweit sie noch nicht vorhanden ist. Pull ruft Änderungen von einem Remote ab und integriert sie entsprechend dem konfigurierten Pull-Verhalten. Reset verschiebt die Referenz des aktuellen Branchs; mit --hard werden außerdem Arbeitsverzeichnis und Index durch den Stand des ausgewählten Commits ersetzt. Entscheide danach, ob du eine einzelne Änderung, einen historischen Ausgangspunkt, Remote-Historie oder einen Branch-Rollback benötigst.

Einen Commit-Hash finden

Mit git log siehst du Commit-IDs, Autorinnen und Autoren sowie Commit-Nachrichten. Für eine kompakte Liste verwendest du git log --oneline. Kopiere die angezeigte ID des gewünschten Commits. Git akzeptiert sowohl eine eindeutige verkürzte ID als auch eine vollständige Objekt-ID. Ist der Commit nur auf einem Remote vorhanden, rufst du die Historie zuerst mit git fetch origin ab und untersuchst anschließend den aktualisierten Verlauf. Ersetze origin durch den Namen deines Remotes und <commit-id> durch die ausgewählte ID.

Einen Commit mit git cherry-pick übernehmen

Rufe den Remote-Branch oder dessen Objekte ab und übernimm anschließend den ausgewählten Commit mit git fetch origin, gefolgt von git cherry-pick <commit-id>. Das ist der direkte Weg, wenn du die Änderung eines einzelnen Commits übernehmen möchtest, ohne einen ganzen Branch zusammenzuführen. Das folgende lokale Beispiel erstellt einen Commit auf einem Topic-Branch und übernimmt ihn in main:

repo=$(mktemp -d)
trap 'rm -rf "$repo"' EXIT
git -C "$repo" init -q -b main
git -C "$repo" config user.name "Example User"
git -C "$repo" config user.email "example@example.com"
printf 'base\n' > "$repo/notes.txt"
git -C "$repo" add notes.txt
git -C "$repo" commit -qm "Add notes"
git -C "$repo" switch -q -c topic
printf 'one change\n' >> "$repo/notes.txt"
git -C "$repo" add notes.txt
git -C "$repo" commit -qm "Add one change"
commit_id=$(git -C "$repo" rev-parse HEAD)
git -C "$repo" switch -q main
git -C "$repo" cherry-pick "$commit_id"
printf 'Applied one commit to main.\n'
[main 5ede2b1] Add one change
 Date: Mon Oct 26 03:50:14 2026 +0000
 1 file changed, 1 insertion(+)
Applied one commit to main.

Bei Konflikten löst du die markierten Dateien auf, stufst die Auflösungen mit git add zur Aufnahme vor und setzt den Vorgang mit git cherry-pick --continue fort. Wenn du abbrechen und zum Zustand vor dem Vorgang zurückkehren möchtest, verwendest du git cherry-pick --abort. Schließe den Vorgang ab oder brich ihn ab, bevor du eine andere Operation beginnst.

Einen Branch an einem bestimmten Commit erstellen

Wenn du einen Commit untersuchen oder als Ausgangspunkt verwenden möchtest, ohne deinen aktuellen Branch zu verschieben, rufst du den Remote ab und führst git checkout -b review-branch <commit-id> aus. Dadurch wird review-branch an diesem Commit erstellt und ausgecheckt. Der Branch enthält die Historie dieses Commits. Spätere Commits auf einem anderen Branch sind erst enthalten, wenn du sie zusammenführst oder mit Cherry-Pick übernimmst.

Einen Commit von einem Remote abrufen und zusammenführen

Führe git fetch origin aus, um die Remote-Tracking-Referenzen zu aktualisieren, ohne die Änderungen zu integrieren. Verwende dann git merge <commit-id>, um den ausgewählten Commit und die erreichbare Historie zusammenzuführen, die deinem aktuellen Branch noch fehlt. Dabei können auch Vorgänger-Commits übernommen werden. Das ist daher nicht dasselbe, wie nur die ausgewählte Änderung anzuwenden. Mit git log --oneline --graph --decorate kannst du den resultierenden Verlauf prüfen.

git pull mit einem Commit-Hash verwenden

Ein Remote kann das Abrufen einer rohen Commit-ID erlauben, wenn das Objekt erreichbar ist und der Server die Anfrage zulässt. Die Unterstützung variiert. Daher ist git pull origin <commit-id> kein portabler Weg, um eine einzelne Änderung auszuwählen. Wird der Befehl akzeptiert, ruft Pull Änderungen ab und integriert sie entsprechend deiner Konfiguration; das bedeutet nicht „nur diesen Commit anwenden“. Für eine einzelne Änderung rufst du den Commit ab und übernimmst ihn mit Cherry-Pick. Andernfalls rufst du einen benannten Branch ab und pullst oder mergst diesen Branch.

Einen Branch auf einen bestimmten Commit zurücksetzen

Verwende git reset --hard <commit-id> nur, wenn du den aktuellen Branch verschieben und Index sowie Arbeitsverzeichnis durch den Stand dieses Commits ersetzen möchtest. Dabei können nicht committete Änderungen verloren gehen. Wenn du den verschobenen Branch später pushst, müssen andere Mitwirkende möglicherweise mit der umgeschriebenen gemeinsamen Historie umgehen. Prüfe vor dem Reset git status und sichere alle Änderungen, die du behalten möchtest. Für ein sichereres Rückgängigmachen, das die veröffentlichte Historie beibehält, verwendest du git revert <commit-id>. Dadurch wird ein neuer Commit erstellt, der die ausgewählte Änderung rückgängig macht.

FAQ

Wie finde ich eine Commit-ID? Verwende git log oder git log --oneline. Wenn der Commit nur auf einem Remote verfügbar ist, rufst du ihn zuerst ab.

Was mache ich, wenn Cherry-Pick Konflikte meldet? Löse die Konflikte in jeder Datei auf und stufe die Dateien zur Aufnahme vor. Führe dann git cherry-pick --continue aus. Mit git cherry-pick --abort brichst du den Vorgang ab.

Kann ich mehrere Commits mit Cherry-Pick übernehmen? Ja. Gib git cherry-pick die IDs in der gewünschten Reihenfolge mit oder verwende einen Commit-Bereich, nachdem du geprüft hast, welche Endpunkte darin enthalten sind.

Sind Reset und Revert dasselbe? Nein. git reset verschiebt die Branch-Referenz und kann lokale Dateien ersetzen. git revert erstellt einen neuen Commit, der eine frühere Änderung rückgängig macht.