git push: Pushe alle Commits außer dem letzten

Lesezeit: 1 Minute

Benutzer-Avatar
Python-Typ

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.

Benutzer-Avatar
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


Benutzer-Avatar
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

Benutzer-Avatar
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

1318790cookie-checkgit push: Pushe alle Commits außer dem letzten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy