Come eseguo git log per vedere le modifiche solo per un ramo specifico?


396

Ho un ramo locale che segue il ramo remoto / principale. Dopo l'esecuzione git-pulle git-log, il registro mostrerà tutti i commit nel ramo di tracciamento remoto e nel ramo corrente. Tuttavia, poiché sono state apportate così tante modifiche al ramo remoto, ho bisogno di vedere solo i commit fatti al ramo locale corrente.

Quale sarebbe il comando Git da usare per mostrare solo i commit per un ramo specifico?

Appunti:

Informazioni sulla configurazione:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master

Risposte:


527

Supponendo che il tuo ramo sia stato creato da master, quindi mentre nel ramo (ovvero, hai il ramo estratto):

git cherry -v master

o

git log master..

Se non sei nel ramo, puoi aggiungere il nome del ramo al comando "git log", in questo modo:

git log master..branchname

Se il tuo ramo è stato creato da origin/master, allora dì origin/masterinvece di master.


100
Perfetto! git log --no-merges master..era esattamente quello di cui avevo bisogno.
Highway of Life,

3
@HighwayofLife: --no-mergespotrebbe sembrare che mostri solo commit da un ramo specifico, ma in realtà sta mostrando solo commit che non hanno portato a una fusione
rynmrtn

5
Che ne dici di un modo per fare ciò che non mi richiede di digitare / conoscere il ramo principale? :)
ELLIOTTCABLE

1
Per avere un'idea del tasso di variazione, ho usato il seguente incantesimo :) che produce un formato di registro di una riga con il nome dell'autore mostrato per primo, seguito dall'età relativa del commit:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman

2
non dovresti leggere? git log master .. <il tuo ramo> --oneline --no-merges
Alex Nolasco

104

Uso:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

È solo per il ramo target (ovviamente --graph, --abbrev-commit --decorate sono più lucidanti).

L'opzione chiave è --first-parent: "Segui solo il primo commit genitore dopo aver visto un commit di unione" ( https://git-scm.com/docs/git-log )

Impedisce la visualizzazione delle forcelle di commit.


25
--first-parent <branch_name>è l'opzione. lavori !
Parassita

3
Dove nome-ramo è cosa, il ramo di cui voglio solo vedere la storia? Su un ramo con solo 3 modifiche, questo mi sta mostrando centinaia.
Ed Randall,

1
--first-parent <branch_name>ha funzionato anche per me! Ho finito con un alias per git log --first-parent $current_branch_name --no-merges. In risposta a @EdRandall, mostrerà i commit sul ramo + quelli da dove è stato ramificato. Ad esempio:
Rachel,

2
Oops, ho presentato presto, ecco l'esempio: hai commesso A e B sul master. Ti dirigi new_featuredal maestro. Aggiungete i commit C e D. Quindi aggiungi E e F al master. Quindi unisci master a new_feature. Utilizzando git logsu new_feature, vedrete "unione master", F, E, D, C, A, B. Utilizzo git log --first-parent new_feature --no-merges, vedrete D, C, A, B.
rachel

24

Se si desidera solo i commit eseguiti dall'utente in un determinato ramo, utilizzare il comando seguente.

git log branch_name --author='Dyaniyal'

13

Il problema che stavo avendo, che penso sia simile a questo, è che il maestro era troppo avanti rispetto al mio punto di diramazione perché la storia fosse utile. (La navigazione verso il punto di diramazione richiederebbe troppo tempo.)

Dopo alcune prove ed errori, questo mi ha dato all'incirca quello che volevo:

git log --graph --decorate --oneline --all ^master^!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.