Mi aspetto git checkout <commit>
per far lampeggiare sia l'albero di lavoro che l'indice alla versione <commit>
. Tuttavia, in alcuni casi manterrà le modifiche correnti sia nella struttura che nell'indice di lavoro. Per esempio:Git: git checkout con albero di lavoro modificato e indice
git branch br1
git branch br2
git checkout br1
<make change M1 to file foo>
git add foo
<make change M2 to file foo>
git checkout br2
Ora tutte le modifiche di lavoro albero/indice composto nel ramo br1
sono conservati nel ramo br2
, come git status
su br2
non darà un messaggio pulito. Immagino che questo sia dovuto al fatto che la testata di br1
e br2
originariamente abbia la stessa versione del file foo
, e Git può rilevarlo automaticamente.
Domanda:
- Quando fa Git decide di non lampeggiare l'albero di lavoro e l'indice? Ci sono altri casi d'angolo?
Questo non è un caso angolare, l'idea è che si può decidere che prima di commettere si voglia commettere su un nuovo ramo. Finché il passaggio da un ramo all'altro non sovrascriverà alcun file modificato/causerà problemi per il git dell'indice, semplicemente passerà al ramo. –
@ X-Istence Ma come decide git ** non causerà problemi **? – Cyker