Załóżmy, że mam 5 lokalnych zatwierdzeń. Chcę przesłać tylko 2 z nich do scentralizowanego repozytorium (przy użyciu przepływu pracy w stylu SVN). Jak mam to zrobic?
To nie zadziałało:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
To kończy się wypchnięciem wszystkich 5 lokalnych zatwierdzeń.
Przypuszczam, że mógłbym zrobić reset git, aby faktycznie cofnąć moje zatwierdzenia, a następnie git stash, a następnie git push - ale mam już napisane komunikaty o zatwierdzeniach i uporządkowane pliki i nie chcę ich powtarzać.
Mam wrażenie, że zadziała jakaś flaga przekazana do naciśnięcia lub zresetowania.
Jeśli to pomoże, oto moja konfiguracja git
[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
master~3
. Każde odniesienie do żądanego zatwierdzenia „do” jest równie ważne, na przykładHEAD~3
lubHEAD~~~
, określony SHA lub znacznik, który oznacza to zatwierdzenie.