Angenommen, ich habe mehrere Commits gemacht und möchte auswählen, welche ich an das Remote-Repository schiebe. Wie kann ich das tun (in ASCII: C1-> C2-> C3-> C4 und ich möchte C2 und C4 drücken). Wird das Nachbestellen mit Rebase, Reset, Pushing und Reset durchgeführt? (C1-> C2-> C3-> C4 => C2-> C4-> C1-> C3 => C4 zurücksetzen => drücken => C3 zurücksetzen). Gibt es einen schöneren Weg?git: push ein einzelnes commit
Antwort
Wenn Sie Ihre Commits in einer Privatfiliale haben, können Sie Commits aus der privaten Branche auswählen und sie auf die offizielle Zweigstelle anwenden. An dieser Stelle können Sie nun alle Ihre Commits auf den offiziellen Zweig schieben (das ist die Untermenge, die Sie zuvor ausgewählt haben).
IIRC, aufgrund der Tatsache, wie Git Commits zu arbeiten, C4 beinhaltet inhärent C3, so dass das Konzept "Drücken C4, aber nicht C3" macht keinen Sinn für git (und ebenfalls C2 relativ zu C1). (Siehe die Antwort auf this previous question.)
Unwahr! C4 referenziert C3 als Elternteil, aber die andere Antwort ist korrekter: Sie können Commits aus der Historie auswählen und sie auf verschiedene Eltern anwenden. –
Ist es nicht mehr wie C4 inhärent gilt, es ist Änderungen an C3, aber C4 Änderungen sind es eigene. – andho
Die Verwendung von 'git cherry-pick' auf' C4', um sie auf einen anderen Zweig anzuwenden, führt nicht zu "C4" auf dem neuen Zweig, sondern zu "C4", einem anderen (aber ähnlichen) Commit. Wenn jemand später in der Filiale mit 'C4' verschmilzt, können Probleme auftreten. – Amber
Was Sie suchen:
git push origin commit-id:master
Kredit geht an: http://blog.dennisrobinson.name/push-only-one-commit-with-git/
Hinweise:
- Pushing a Schübe alle Commits, bevor sie begehen (wie Bernstein sagte). Der Schlüssel ist, Ihre commits (
git rebase -i
) zuerst neu zu ordnen, also sind sie in der Reihenfolge, die Sie sie drücken möchten. - Die vorgeschlagene Branch + Cherry-Pick-Methode (von Midtiby vorgeschlagen) funktioniert auch, aber warum Wegwerf-Zweige erstellen, wenn Sie nicht brauchen.
commit-id
muss nicht ein sha1 sein. Um alles vor dem letzten N-Commits zu schieben, verwenden Sie "HEAD ~ N" anstelle voncommit-id
.
Dies sollte die akzeptierte Antwort sein. +1 danke. –
$ git push <remote name> <commit hash>:<remote branch name>
# Example:
$ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master
bitte fügen Sie einige Kommentare mit Ihrer Antwort hinzu, die es leicht machen wird, ... –
- 1. ein einzelnes Commit von einem "git diff"
- 2. Git - Cherry ein einzelnes Commit für Pull-Anfrage auswählen
- 3. ein ‚git push‘
- 4. git commit in Pre-Push-Haken
- 5. git commit -m vs. git commit -am
- 6. git Push-Zweig, unterlassen ein commit, aber lokal alle
- 7. Commit und Push ein Git-Repository mit Rails
- 8. Wie entpacke ich ein einzelnes Git-Objekt?
- 9. Vorschau ein Git Push
- 10. git rebase ein single commit
- 11. Intellij Git ein Commit zurück
- 12. Git: Fortschrittsbalken beim Commit?
- 13. Git submodul commit hooks
- 14. git pull hinzufügen, commit und push in java
- 15. Git - Push zu neue Fernbedienung mit einem einzigen konsolidierten Commit
- 16. Warum Git Rebase basiert nicht auf meinem letzten Push Commit?
- 17. Android Studio Commit & Push-Fehler
- 18. Gulp Git laufen erste Commit-Aufgabe dann Push-Aufgabe
- 19. Wie ein git push --force
- 20. Wie kann ich ein Git Commit ohne ein früheres tun?
- 21. Git push alle commits als single commit mit benutzerdefinierten Nachricht
- 22. Wie zum Repo Push nach dem 'git commit --amend'
- 23. Git alias Befehl für add/commit/push mit mehreren Eingängen
- 24. Ändern Sie alle Push-Commit-Nachrichten
- 25. Commit und Push macht neuen Zweig (Eclipse)
- 26. alle Git löscht Geschichte Commit
- 27. Git Push Commit Cross Branch, Fetch Commit von einem Zweig zum anderen
- 28. Git Push to Remote Problem
- 29. Get Git Repository letzten Commit
- 30. Git: Stop git push
Ja, man kann die Geschichte neu zu schreiben (oder separaten Zweig mit dem erforderlichen Geschichte erstellen) und dann drücken. Das ist der einzige Weg. –
Ich war auch auf der Suche nach dem gleichen Problem. Diese Ressource könnte nützlich sein https://miteshshah.github.io/linux/git/how-to-push-single-commit-with-git/ –