Gibt es eine Möglichkeit, alle meine lokalen Commits in das Remote-Repository zu verschieben außer dem neusten? Ich möchte das letzte lokal aufbewahren, nur für den Fall, dass ich eine Änderung vornehmen muss.
git push: Pushe alle Commits außer dem letzten
Python-Typ
KL-7
Versuchen Sie dies (vorausgesetzt, Sie arbeiten mit master
Nebenstelle und Ihre Fernbedienung wird aufgerufen origin
):
git push origin HEAD^:master
HEAD^
zeigt auf den Commit vor dem letzten im aktuellen Zweig (der letzte Commit kann bezeichnet werden als HEAD
), also schiebt dieser Befehl diesen Commit (mit allen vorherigen Commits) auf remote origin/master
Zweig.
Falls Sie interessiert sind, finden Sie weitere Informationen zum Festlegen von Revisionen in diese Manpage.
Aktualisieren: Ich bezweifle, dass das der Fall ist, aber trotzdem sollten Sie mit diesem Befehl vorsichtig sein, wenn Ihr letzter Commit Merge ist. Mit Merge-Commit in der HEAD
HEAD^
bezieht sich auf den ersten Elternteil dieses Commits, HEAD^2
– an seinen zweiten Elternteil usw.
-
Wenn Sie Windows verwenden, verwenden Sie das Zitat
^
indem Sie es verdoppeln, oder Sie werden am Ende alles pushen:git push origin HEAD^^:master
– Ferruccio
28. Dezember 2020 um 12:02 Uhr
-
ich habe
zsh: no matches found: HEAD^:master
. Wenn Sie zsh verwenden (oder EXTENDED_GLOB aktiviert haben), müssen Sie das Caret maskieren:\^
– Codi
7. April 2021 um 18:28 Uhr
-
Muss ich meine lokale Verzweigung und Remote angeben, wenn ich die aktuelle Verzweigung auf die Setup-Remote übertragen möchte? Oder könnte ich einfach
git push HEAD^
?– Herr Derb
7. April um 9:32
SherylHohman
Ein allgemeinerer Ansatz, der funktioniert push
bis zu einem bestimmten Commit, ist die Angabe des Commit-Hashes.
git push <remote> <commit hash>:<branch>
Wenn Sie beispielsweise diese Commits haben:
111111
<-- erster Commit
222222
333333
444444
555555
666666
<-- letzter Commit
git push origin 555555:master
..Wird alles außer Ihrem letzten Commit auf Ihre Fernbedienung schieben master
Filiale und
git push origin 333333:myOtherBranch
..Wird Commits bis einschließlich vorantreiben 333333
zu Ihrer entfernten Filiale myOtherBranch
-
Fehler: Das von Ihnen angegebene Ziel ist kein vollständiger Refname (dh beginnt mit “refs/”). Wir haben versucht zu erraten, was Sie damit meinten
– Kasra
6. Juli 2020 um 8:28 Uhr
Jarett Millard
Eine andere Möglichkeit ist
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 verschoben. Auf diese Weise können Sie sehen, was gepusht wird (via git log
) vor dem Drücken.
-
Sie verlieren jedoch die Commit-Nachricht (des letzten, nicht gepushten Commit).
– Konrad Morawski
29. Mai 2020 um 11:26 Uhr