Git Push: Push alle Commits außer dem letzten

74

Gibt es eine Möglichkeit, alle meine lokalen Commits mit Ausnahme des neuesten auf das Remote-Repository zu übertragen ? Ich möchte den letzten lokal behalten, nur für den Fall, dass ich eine Änderung vornehmen muss.

Python-Typ
quelle

Antworten:

94

Versuchen Sie Folgendes (vorausgesetzt, Sie arbeiten mit masterBranch und Ihre Fernbedienung heißt origin):

git push origin HEAD^:master

HEAD^zeigt auf das Commit vor dem letzten im aktuellen Zweig (das letzte Commit kann als bezeichnet werden HEAD), sodass dieser Befehl dieses Commit (mit allen vorherigen Commits) an den Remote- origin/masterZweig weiterleitet .

Falls Sie interessiert sind, finden Sie weitere Informationen zum Festlegen von Revisionen in dieser Manpage .

Update: Ich bezweifle, dass dies der Fall ist, aber trotzdem sollten Sie mit diesem Befehl vorsichtig sein, wenn Ihr letztes Commit zusammengeführt wird. Mit Merge Commit in HEAD HEAD^bezieht sich das auf das erste übergeordnete Element dieses Commits, HEAD^2- auf das zweite übergeordnete Element usw.

KL-7
quelle
23

Ein allgemeinerer Ansatz, der pushbis zu einem bestimmten Commit funktioniert , besteht darin, den Commit-Hash anzugeben.

git push <remote> <commit hash>:<branch>

Wenn Sie beispielsweise folgende Commits haben:
111111 <- erstes Commit
222222
333333
444444
555555
666666 <- letztes Commit

git push origin 555555:master

..Wird alle bis auf Ihr letztes Commit an Ihren Remote- masterZweig senden , und

git push origin 333333:myOtherBranch  

..Will Push-Commits bis einschließlich 333333in Ihre Remote-FilialemyOtherBranch

SherylHohman
quelle
Fehler: Das von Ihnen angegebene Ziel ist kein vollständiger Referenzname (dh beginnend mit "refs /"). Wir haben versucht zu erraten, was Sie damit gemeint haben
Kasra
10

Eine andere Möglichkeit ist zu

git reset --soft HEAD^

um Ihr letztes Commit aufzuheben und die Änderungen in "Staged" zu verschieben. Dann kannst du

git push

und es werden nur die verbleibenden Commits gepusht. Auf diese Weise können Sie sehen, was git logvor dem Drücken gedrückt wird (via ).

Jarett Millard
quelle
1
Sie verlieren jedoch die Commit-Nachricht (des neuesten, nicht gepushten Commits)
Konrad Morawski