Angenommen, ich habe 5 lokale Commits. Ich möchte nur zwei von ihnen zu einem zentralisierten Repo (mit einem SVN-Stil-Workflow) schieben. Wie mache ich das?Wie drücken Sie nur einige Ihrer lokalen Git-Commits?
arbeitet Dies geschah nicht:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
, dass alle fünf lokal Commits drängen landet.
Ich könnte git reset machen, um tatsächlich meine commits rückgängig zu machen, gefolgt von git stash und dann git push - aber ich habe bereits commit messages geschrieben und dateien organisiert und ich will sie nicht wiederholen.
Mein Gefühl ist, dass einige Flag Push oder Reset würde funktionieren.
Wenn es hilft, ist hier meine git config-
[ramanujan:~/myrepo/.git]$cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://server/git/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Hinweis: Sie müssen nicht 'master ~ 3' verwenden. Jede Bezugnahme auf das gewünschte "bis zu" -Commit ist ebenso gültig, wie zum Beispiel "HEAD ~ 3" oder "HEAD ~~~", oder das spezifische SHA oder ein Etikett, das dieses Commit kennzeichnet. – Kaz
Gute Sachen. Eine Warnung allerdings: Diese Beispiele drücken zum Ursprungs-Master. Wenn Sie diese Lösung kopieren und einfügen, kann es passieren, dass Sie versehentlich den Master-Zweig aktualisieren. (Natürlich sollten Sie immer vorsichtig sein und Ihren Befehl überprüfen, bevor Sie einen 'git push' absetzen ...) – nofinator
Es scheint, dass dies den Commit verschiebt, aber den Zweig nicht entfernt hinzufügt. – Nateowami