2012-02-06 12 views
8

Ho appena sincronizzato il mio repository git e ho avuto una regressione. Mi piacerebbe solo passare attraverso la storia fino a trovare il commit da incolpare, ma c'è stata un'enorme fusione che si presenta come un singolo commit quando faccio git log.Come posso appiattire le unioni in una cronologia lineare?

C'è un modo per appiattire questa unione nel mio ramo locale, quindi git log ha solo una cronologia lineare che posso percorrere?

risposta

5

Quello che stai cercando è interactive rebase.

È possibile rebase contro master tramite git rebase -i master. Si dovrebbe vedere qualcosa come

pick ba6b4b7 Commit messages here 
pick 744ea3b Another commit message 
pick 33539d5 Commits all around! 

È quindi possibile modificare i "pick" s dopo il primo a "squash". Questo li schiaccerà tutti in cima al commit. Puoi anche cambiare il "pick" in alto in "fixup" per cambiare il suo messaggio di commit.

0

Tranne il rebase effettivo, è anche possibile ottimizzare la query. git log --topo-order $head, per ogni unione, elenca tutto il contenuto di un ramo unito subito dopo il commit di unione. Sembrerebbe esattamente come se avessi ridefinito quel ramo.

Problemi correlati