Sono assolutamente amare git add -p
e git stash
ma di tanto in tanto il seguente problema, che viene riprodotta con la seguente sequenza di comandi:git Stash e modificati Hunk
git add -p my_file
: poi ho modificare un pezzo manualmente (usandoe
) a causa della scissione che git suggerisce non soddisfa megit stash --keep-index
: poi faccio qualche test, e se i test passano non commettogit stash pop
: ora il problema si verifica: il filemy_file
ora è considerato come in conflitto, e git ha completamente pasticciato con il mio pezzo modificato, quindi devo modificare il file, rimuovere i segni di unione inutili ed eseguiregit add my_file
seguito dagit reset HEAD
Sono perplesso perché questo accade solo quando si modifica manualmente un blocco. Non vedo come questo dovrebbe fare alcuna differenza.
per riprodurre il problema:
touch newfile
git add newfile
git commit -m 'newfile'
- aggiungere due righe nel file
git add -p newfile
- modificare l'h unk (
e
), rimuovere una delle linee del pezzo, quindi chiudere git add (q
) git stash --keep-index
git stash pop
Ora il file newfile
è in stato unmerged. Notare, ancora una volta, che il problema si verifica solo con gli hunk modificati manualmente. Non c'è nessun problema con i comandi sopra se non si modifica manualmente alcun pezzo.
Per inciso, lo stato precedente del file si trova nella terza fase (git show :3:newfile
) e la versione precedente in staging si trova nella seconda fase (git show :2:newfile
). Quindi, con un po 'di magia nera, sono riuscito a mettere la seconda fase in questo indice, e il terzo stadio nel repository di lavoro ... ma non so come farlo, così lo faccio a mano. :-(
Ho provato più volte, ma non riesco a riprodurre il problema con git versione 1.7.2.3. Che versione stai usando? –
Sto usando la versione 1.7.3.1 su Mac OS X. –
Provato di nuovo con diverse modifiche casuali in 'git add -p' - e funziona sempre bene per me. A proposito, sono su Linux. Sembra un bug - ti consiglierei di chiedere sulla mailing list git, sono abbastanza reattivi. –