Mostra solo la storia di un ramo in un registro Git
-
08-10-2019 - |
Domanda
Sto usando Git per il mio progetto e cercando di seguire le migliori prassi:
- Io lavoro su un ramo argomento
- Quando si è pronti, ho unire i ramo argomento nel mio dev ramo utilizzando
git merge --squash
. Ciò mantiene il mio dev ramo pulita. - Ogni volta che il dev ramo è stabile e la squadra decide che è tempo per un rilascio, si fondono il dev ramo in Master ramo, senza utilizzando squash e tag che commettono come una liberazione versione.
Questo dovrebbe mantenere la nostra storia, e l'utilizzo di gitk, possiamo vedere dove tutti i commit sono disponibili in. Tuttavia, voglio essere in grado di vedere solo i commit applicate al Master ramo. Ho provato:
git log master
git show-branch
Nessuno di questi spettacolo solo la storia del Master ramo. C'è un modo per farlo facilmente?
Soluzione
Se ti sto comprensione correttamente, si vuole vedere le unioni di nuovo in padrone, ma non la storia di quei unioni. Credo che:
git log --merges
ti darà quello che vuoi.
UPDATE:. L'aggiunta di --first-genitore dovrebbe risolvere questo dai suoni di esso
git log --merges --first-parent
- primo genitore
Follow only the first parent commit upon seeing a merge commit.
Questa opzione può dare una migliore visione d'insieme quando si visualizza l'evoluzione di un argomento particolare ramo, perché si fonde in un ramo argomento tendono ad essere solo sulla regolazione di aggiornamento monte di volta in volta, e questo opzione consente di ignorare il individuali impegna portato al tuo la storia di un siffatto fusione.
Altri suggerimenti
Purtroppo, Git non memorizza le informazioni ramo per un commit, e si impegna a non appartengono ad un ramo. Filiali in Git sono solo "in movimento tag" in un corso di commit e NON una sequenza di commit come ci si aspetterebbe.
Quindi, in pratica non è possibile mostrare commit che appartengono ad un ramo in quanto non esiste il concetto di Git.
Dato che Git non memorizza informazioni su quale ramo è nascente, da cui altri, non v'è alcun modo automatico per indovinare quale ramo che si può desiderare di essere mostrato.
A questo proposito, --first-parent
non sarà in ultima analisi, di aiuto, soprattutto perché è facile avere più di un master, per esempio. Prendere in considerazione:
wc1$ git clone git://shared.com/repo
wc1$ (hack code, git commit)
wc2$ git clone git://shared.com/repo
wc2$ (hack code, git commit, git push somewhere)
wc1$ git fetch origin; git merge origin/master; git push somewhere master;
(Sentitevi liberi di prendere un progetto a caso e fare questo esercizio.) Grafico esso. Quindi non si può per significato Graph "un solo ramo", anche se i commit sono stati etichettati con il nome del ramo sono state fatte su (perché entrambi sono master).