git diff
pode mostrar a diferença entre dois commits:
git diff mybranch master -- myfile.cs
Ou equivalente:
git diff mybranch..master -- myfile.cs
Usando a última sintaxe, se um dos lados estiver, HEAD
ele poderá ser omitido (por exemplo, master..
comparado master
a HEAD
).
Você também pode estar interessado mybranch...master
(nos git diff
documentos ):
Este formulário é para exibir as alterações no ramo que contém e até o segundo <commit>
, iniciando em um ancestral comum de ambos <commit>
. git diff A...B
é equivalente a git diff $(git-merge-base A B) B
.
Em outras palavras, isso dará uma diferença nas alterações, master
uma vez que divergiram de mybranch
(mas sem novas alterações desde então mybranch
).
Em todos os casos, o --
separador antes do nome do arquivo indica o fim dos sinalizadores da linha de comando. Isso é opcional, a menos que o Git fique confuso se o argumento se referir a um commit ou a um arquivo, mas incluir esse não é um mau hábito. Consulte https://stackoverflow.com/a/13321491/54249 para obter alguns exemplos.
Os mesmos argumentos podem ser passados para git difftool
se você tiver um configurado.
git diff branch1 branch2 myfile.cs
. (--
Isso não deve mais ser necessário, pois ele pode levar apenas dois argumentos de revisão.) #--
erro. Comum e fácil de cometer.) #git diff --name-status branch1..branch2
(provavelmente óbvio, mas pensei em mencioná-lo caso outra pessoa tenha o mesmo problema que eu).Você consegue fazer isso:
git diff branch1:path/to/file branch2:path/to/file
Se você tiver o difftool configurado, também poderá:
git difftool branch1:path/to/file branch2:path/to/file
Pergunta relacionada: Como visualizo a saída do git diff com o programa visual diff
fonte
branch1:./file
). Isso também é útil se o arquivo estiver em um local separado entre as ramificações (por exemplogit diff branch1:old/path/to/file branch2:new/path/to/file
).git diff branch1 branch2 path/to/file
.Sintaxe mais moderna:
git diff ..master path/to/file
O prefixo de ponto duplo significa "do diretório de trabalho atual para". Você também pode dizer:
master..
, ou seja, o inverso acima. É o mesmo quemaster
.mybranch..master
, referenciando explicitamente um estado que não seja a árvore de trabalho atual.v2.0.1..master
, ou seja, referenciando uma tag.[refspec]..[refspec]
, basicamente qualquer coisa identificável como um estado de código para git.fonte
Existem várias maneiras de comparar arquivos de duas ramificações diferentes:
Opção 1: se você deseja comparar o arquivo de n ramificação específica com outra ramificação específica:
Exemplo:
Opção 2: Maneira simples:
Exemplo:
Opção 3: se você deseja comparar seu diretório de trabalho atual com alguma ramificação:
Exemplo:
fonte
Eu simplesmente faço
git diff branch1 branch2 path/to/file
Isso verifica as diferenças entre os arquivos. As alterações
branch1
seriam em vermelho. Alterações embranch2
seriam em verde.Supõe-se que
branch1
é o passado ebranch2
é o futuro. Você pode reverter isso revertendo a ordem dos ramos no diff:git diff branch2 branch1
fonte
Se você quiser fazer uma diferença em relação à ramificação atual, pode omitir e usar:
git diff $BRANCH -- path/to/file
dessa forma, ele difere do ramo atual para o ramo referenciado (
$BRANCH
).fonte
Concordando com a resposta sugerida por @dahlbyk. Se você deseja que o diff seja gravado em um arquivo diff para revisões de código, use o seguinte comando.
fonte
No meu caso, eu uso o comando abaixo:
Este comando pode ajudá-lo a comparar o mesmo arquivo em dois ramos diferentes
fonte
A melhor maneira de fazer isso é usando
git diff
da seguinte maneira:git diff <source_branch> <target_branch> -- file_path
Ele verificará a diferença entre os arquivos nessas ramificações. Dê uma olhada neste artigo para obter mais informações sobre os comandos git e como eles funcionam.
fonte
Use hashes de confirmação como este:
onde hash1 pode ser qualquer confirmação de qualquer ramificação, o mesmo para hash2 .
fonte
Existem dois cenários para comparar arquivos:
Cenário 1: Compare arquivos em ramificações remotas (ambas as ramificações devem existir no repositório remoto)
Cenário 2: Compare os arquivos locais (na cópia da área de trabalho local) com os arquivos no repositório remoto.
A lógica é simples. Se você fornecer dois nomes de ramificação para diferenças, ele sempre comparará as ramificações remotas e, se você fornecer apenas um nome de ramificação, sempre comparará sua cópia de trabalho local com o repositório remoto (o que você forneceu). Você pode usar o range para fornecer repositórios remotos.
por exemplo, fazer checkout de uma filial
nesse caso, se você fornecer o nome do arquivo, ele comparará sua cópia local do nome do arquivo com a ramificação remota denominada " branch2 ".
nesse caso, ele comparará o nome de arquivo de ramificações remotas denominadas " branch1 " vs " branch2 "
também nesse caso, ele comparará o nome de arquivo de ramificações remotas denominadas " branch1 " vs " branch2 ". Então, é o mesmo que acima. No entanto, se você acabou de criar uma ramificação a partir de outra ramificação, diga "master" e sua ramificação atual não existe no repositório remoto, ele comparará " master " remoto versus " branch2 " remoto .
Espero que seja útil.
fonte
Para comparar dois arquivos no git bash, você precisa usar o comando:
Este comando mostrará a diferença entre os dois arquivos no próprio bash.
fonte