Supponiamo che abbia 5 commit locali. Voglio spingere solo 2 di loro su un repository centralizzato (utilizzando un flusso di lavoro in stile SVN). Come faccio a fare questo?come si spinge solo alcuni dei vostri commit git locali?
Questo non ha funzionato:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
che finisce per spingere tutti i 5 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à ricevuto messaggi di commit scritti e file organizzati e non voglio rifarli.
La mia sensazione è che qualche bandiera passata a push o reset funzionasse.
Se aiuta, ecco il mio 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
Nota: non è necessario utilizzare 'master ~ 3'. Qualsiasi riferimento al commit "fino a" desiderato è ugualmente valido, come ad esempio "HEAD ~ 3" o "HEAD ~~~", o lo specifico SHA, o un tag con le etichette che si impegnano. – Kaz
Roba buona. Un avvertimento però: questi esempi spingono al master di origine. Se stai copiando e incollando questa soluzione, potresti finire per aggiornare accidentalmente il ramo principale. (Naturalmente, si dovrebbe sempre fare attenzione e ricontrollare il comando prima di emettere un 'git push' ...) – nofinator
Sembra che questo spinga il commit, ma non aggiunga il ramo da remoto. – Nateowami