Como executo o git log para ver as alterações apenas em uma ramificação específica?

396

Eu tenho uma filial local que rastreia a filial remota / principal. Após executar git-pulle git-log, o log mostrará todas as confirmações na ramificação de rastreamento remoto, bem como na ramificação atual. No entanto, como houve muitas alterações feitas na ramificação remota, preciso ver apenas as confirmações feitas na ramificação local atual.

Qual seria o comando Git a ser usado para mostrar apenas confirmações para uma ramificação específica?

Notas:

Informações de configuração:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master
Rodovia da Vida
fonte

Respostas:

527

Supondo que sua ramificação tenha sido criada master, e enquanto estiver na ramificação (ou seja, você efetuou check-out da ramificação):

git cherry -v master

ou

git log master..

Se você não estiver na ramificação, poderá adicionar o nome da ramificação ao comando "git log", assim:

git log master..branchname

Se sua ramificação foi feita origin/master, diga em origin/mastervez de master.

Wayne Conrad
fonte
100
Perfeito! git log --no-merges master..era exatamente o que eu precisava.
Highway of Life
3
@HighwayofLife: --no-mergespode parecer que ele só está mostrando commits de um ramo específico, mas é realmente apenas mostrando commits que não resultaram em uma mala
rynmrtn
5
Que tal uma maneira de fazer isso que não exija que eu digite / conheça o ramo pai? :)
ELLIOTTCABLE
11
Para ter uma noção da taxa de variação, eu usei o seguinte encantamento :) que produz um formato de registro de uma linha com o nome do autor mostrado primeiro, seguido pela idade relativa do commit:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman
2
não deveria ler? git log master .. <sua filial> --online --no-merges #
Alex Nolasco
104

Usar:

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

É apenas para o ramo de destino (é claro que --graph, --abbrev-commit --decorate são mais polidos).

A opção principal é --first-parent: "Siga apenas o primeiro commit pai ao ver um commit de mesclagem" ( https://git-scm.com/docs/git-log )

Impede que os garfos de confirmação sejam exibidos.

yerlilbilgin
fonte
25
--first-parent <branch_name>é a opção trabalho !
parasrish 01/12/16
3
Onde é o nome do ramo, o ramo cuja história eu só quero ver? Em um ramo com apenas três alterações, isso está me mostrando centenas.
Ed Randall
11
--first-parent <branch_name>também funcionou para mim! Acabei com um pseudônimo para git log --first-parent $current_branch_name --no-merges. Em resposta a @EdRandall, ele mostrará os commits na ramificação + aqueles de onde foram ramificados. Por exemplo:
rachel
2
Opa, enviei em breve, aqui está o exemplo: Você confirma A e B no mestre. Você ramifica new_featuredo mestre. Você adiciona confirmações C e D a ele. Então você adiciona E e F ao mestre. Em seguida, você mescla o mestre em new_feature. Usando git loga new_feature, você verá "mestre merge", F, E, D, C, A, B. usando git log --first-parent new_feature --no-merges, você verá D, C, A, B.
rachel
24

Se você deseja apenas as confirmações feitas por você em uma ramificação específica, use o comando abaixo.

git log branch_name --author='Dyaniyal'
Dyaniyal Wilson
fonte
13

O problema que eu estava tendo, que acho que é semelhante a isso, é que o mestre estava muito à frente do meu ponto de ramificação para que a história fosse útil. (Navegar para o ponto de ramificação levaria muito tempo.)

Após algumas tentativas e erros, isso me deu aproximadamente o que eu queria:

git log --graph --decorate --oneline --all ^master^!
GPHemsley
fonte
0

apenas corra git log origin/$BRANCH_NAME

Mahdi Pedram
fonte