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.
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
Você pode facilmente fazer isso com
git log master..branch-X
Isso mostrará que você confirma que branch-X tem, mas master não.
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
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
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]
se você quiser usar o gitk:
gitk master..branch-X
tem uma boa GUi old school
#! /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.