Suponha que eu tenha 5 confirmações locais. Quero enviar apenas dois deles para um repositório centralizado (usando um fluxo de trabalho no estilo SVN). Como eu faço isso?
Isso não funcionou:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
Isso acaba forçando todos os 5 commits locais.
Suponho que eu poderia fazer o git reset para desfazer meus commits, seguidos por git stash e git push - mas eu já tenho mensagens de commit escritas e arquivos organizados e não quero refazê-los.
Meu sentimento é que alguma bandeira passada para empurrar ou redefinir funcionaria.
Se ajudar, aqui está minha configuração do 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
. Qualquer referência ao commit "até" desejado é igualmente válida, comoHEAD~3
orHEAD~~~
, ou o SHA específico, ou uma tag que rotula esse commit.