Ich möchte ein git pull
aber nur bis zu einem bestimmten Commit machen.
A->B->C->D->E->F (Remote master HEAD)
Nehmen wir also an, mein local master
KOPF zeigt auf B
und ich möchte bis ziehen E
. Was soll ich machen ?
Dies führt nicht zu einem bestimmten Commit, sondern zu einem bestimmten Commit.
git fetch
undgit merge E
.Antworten:
git pull
ist nichts anderes alsgit fetch
gefolgt vongit merge
. Was Sie also tun können, istgit fetch remote example_branch
git merge <commit_hash>
quelle
git merge E
wirdE
mit all seinen Vorfahren zusammengeführtC
undD
(git weiß dasA
undB
muss nicht zusammengeführt werden, weil sie bereits in Ihrem Zweig waren). Wenn Sie NUR die Änderungen von möchtenE
, sollten Siegit cherry-pick E
stattdessen.Rufen Sie zunächst die neuesten Commits vom Remote-Repo ab. Dies hat keine Auswirkungen auf Ihre lokale Niederlassung.
Überprüfen Sie dann den Remote-Tracking-Zweig und erstellen Sie ein Git-Protokoll, um die Commits anzuzeigen
Holen Sie sich den Commit-Hash des Commits, zu dem Sie zusammenführen möchten (oder nur die ersten ~ 5 Zeichen davon), und führen Sie diesen Commit zum Master zusammen
quelle
git fetch
bevor Sie solchen Unsinn schreiben. Darüber hinaus sollten Sie die ursprüngliche Frage und meine Antwort lesen. Wenn Sie meiner Antwort folgen, werden Sie nicht "zurück in der Geschichte" sein, wie ich den Benutzer ausdrücklich anweisegit checkout master
. Insgesamt bitte keine Beiträge posten, wenn Sie nicht zu mindestens 50% klar sind, was Sie tun.git fetch origin
explizit abgerufen .Sie können auch das letzte Commit abrufen und bis zum gewünschten Commit rückgängig machen:
Ersetzen Sie
master
durch Ihren gewünschten Zweig.Verwenden Sie das Git-Protokoll, um zu sehen, auf welches Commit Sie zurücksetzen möchten:
Persönlich hat das bei mir besser funktioniert.
Grundsätzlich wird das letzte Commit abgerufen, und Sie setzen die Commits nacheinander manuell zurück. Verwenden Sie das Git-Protokoll, um den Commit-Verlauf anzuzeigen.
Gute Punkte: Funktioniert wie angegeben. Sie müssen keinen Commit-Hash verwenden oder nicht benötigte Zweige abrufen.
Schlechte Punkte: Sie müssen Commits um eins zurücksetzen.
WARNUNG: Übernehmen / verstauen Sie alle Ihre lokalen Änderungen, da
--hard
Sie diese mit Ihnen verlieren werden. Benutzung auf eigene Gefahr!quelle
HEAD
- und ich weiß nicht, was passieren würde, wenn Sie Konflikte lösen müssten. Diese Lösung ermöglicht jedochgit pull --rebase
, und im Gegensatz zu dem, was gesagt wurde, können Sie direkt aufN
Commits zurücksetzen,git reset --hard HEAD~N
dh mit (dh für 3 Commitsgit reset --hard HEAD~3
).Wenn Sie ein Commit in Ihrem Zweig zusammenführen, sollten Sie den gesamten Verlauf zwischen abrufen.
Beobachten:
quelle
Das funktioniert bei mir:
z.B
Dies zieht 28eb00, ff39e4 und alles vorher, aber nicht f4d10ad. Es ermöglicht die Verwendung von pull --rebase und berücksichtigt Pull-Einstellungen in Ihrer gitconfig. Dies funktioniert, weil Sie 28eb00 grundsätzlich als Zweig behandeln.
Für die von mir verwendete Version von git erfordert diese Methode einen vollständigen Commit-Hash - es sind keine Abkürzungen oder Aliase zulässig. Sie könnten so etwas tun wie:
quelle