Supponiamo che io abbia 5 commit locali. Voglio inviarne solo 2 a un repository centralizzato (usando un flusso di lavoro in stile SVN). Come faccio a fare questo?
Questo non ha funzionato:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
Questo finisce per spingere tutti e 5 gli commit locali.
Suppongo che potrei fare git reset per annullare effettivamente i miei commit, seguito da git stash e poi git push - ma ho già scritto messaggi di commit e file organizzati e non voglio rifarli.
La mia sensazione è che alcuni flag passati a push o reset funzionino.
Se aiuta, ecco la mia configurazione di 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
. Qualsiasi riferimento al commit "fino a" desiderato è ugualmente valido, comeHEAD~3
oHEAD~~~
, o lo SHA specifico, o un tag che identifica quel commit.