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.
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.
Antworten:
Versuchen Sie Folgendes (vorausgesetzt, Sie arbeiten mit master
Branch 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/master
Zweig 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.
Ein allgemeinerer Ansatz, der push
bis 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- master
Zweig senden , und
git push origin 333333:myOtherBranch
..Will Push-Commits bis einschließlich 333333
in Ihre Remote-FilialemyOtherBranch
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 log
vor dem Drücken gedrückt wird (via ).