web-dev-qa-db-pt.com

Como vejo as diferenças de commit entre branches no git?

Estou no branch-X e adicionei mais alguns commits em cima dele. Eu quero ver todas as diferenças entre o MASTER e o ramo em que estou em termos de commits. Eu poderia apenas fazer um

git checkout master
git log

e depois um

git checkout branch-X
git log

e visualmente diferenciá-los, mas estou esperando por um método mais fácil, menos propenso a erros.

268
Avery

Você pode obter uma saída visual realmente agradável de como seus ramos diferem com isso

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative master..branch-X
270
tom

Você pode facilmente fazer isso com

git log master..branch-X

Isso mostrará que você confirma que branch-X tem, mas master não.

608
Pablo Fernandez heelhook

Eu acho que é questão de escolha e contexto. Eu prefiro usar

git log Origin/master..Origin/develop --oneline

Ele exibirá commits em desenvolver que não estão no branch master.

Se você quiser ver quais arquivos estão realmente modificados, use

git diff --stat Origin/master..Origin/develop

Se você não especificar argumentos, ele exibirá o diff completo. Se você quiser ver o diff visual, instale meld no linux ou WinMerge no windows. Certifique-se de que eles são os difftools padrão. Então, use algo como

git difftool -y Origin/master..Origin/develop

No caso de você querer compará-lo com o ramo atual. É mais conveniente usar HEAD em vez do nome da ramificação como uso:

git fetch
git log Origin/master..HEAD --oneline

Ele mostrará todos os commits, prestes a serem mesclados

54
zainengineer

Se você está no Linux, gitg é uma maneira de fazer isso de maneira rápida e gráfica.

Se você insistir na linha de comando, você pode usar:

git log --oneline --decorate

Para tornar git log mais bonito por padrão, eu normalmente configuro essas preferências globais:

git config --global log.decorate true
git config --global log.abbrevCommit true
14
mvp

Eu sugiro o seguinte para ver a diferença "em commits". Para diferença simétrica, repita o comando com argumentos invertidos:

git cherry -v master [your branch, or HEAD as default]
12
mmaruska

se você quiser usar o gitk:

gitk master..branch-X

tem uma boa GUi old school

8
snowcamel

Não é a resposta perfeita, mas funciona melhor para as pessoas que usam o Github:

enter image description here

Vá para o seu repo: Insights -> Network

4
AIon
#! /bin/bash
if ((2==$#)); then
  a=$1
  b=$2
  alog=$(echo $a | tr '/' '-').log
  blog=$(echo $b | tr '/' '-').log
  git log --oneline $a > $alog
  git log --oneline $b > $blog
  diff $alog $blog
fi

Contribuindo com isso porque permite que os logs aeb sejam visualmente diferenciados, lado a lado, se você tiver uma ferramenta de comparação visual. Substitua o comando diff no final com o comando para iniciar a ferramenta visual diff.

0
Kim Briggs