Se você usa o GitHub para a localização na nuvem do seu repositório, é muito simples: navegue até o seu projeto e clique no cabeçalho "confirma" na tabela que exibe o seu projeto
David Lundquist
1
O significado de "versão atual e a última versão" realmente deve ser esclarecido na pergunta.
Faintsignal
Respostas:
1170
Eu realmente não entendo o significado de "última versão".
Como o commit anterior pode ser acessado com HEAD ^, acho que você está procurando algo como:
git diff HEAD^ HEAD
A partir do Git 1.8.5, @é um alias para HEAD, então você pode usar:
git diff @~..@
O seguinte também funcionará:
git show
Se você quiser saber a diferença entre head e qualquer commit, você pode usar:
git diff commit_id HEAD
E isso iniciará sua ferramenta visual diff (se configurada):
git difftool HEAD^ HEAD
Como a comparação com o HEAD é o padrão, você pode omiti-lo (como apontado pelo Orient ):
git diff @^
git diff HEAD^
git diff commit_id
Advertências
@ScottF e @Panzercrisis explicam nos comentários que no Windows o ~caractere deve ser usado em vez de ^.
Eu queria algo como a versão comprometido e versão antes que ... git diff cabeça cabeça-1
Rajeev
7
A partir do Git 1.8.5, @é um alias para HEAD. E desde ~e ^são os mesmos quando só vai um commit para trás, acho git diff @~..@muito mais fácil de digitar.
Andrew
80
@ Andrew git showé ainda mais fácil, já que @~..@é a coisa padrão a ser mostrada.
amalloy
3
git showapenas imprime a mensagem de confirmação, ela não gera uma diferença das alterações específicas, pelo menos no Git 2.5.4 (Apple Git-61), portanto, na verdade, não seria uma resposta à pergunta do OP.
user1944491
1
O problema git showé que, se HEADfor um commit de mesclagem, você não obterá o que espera, pois o próprio commit de mesclagem pode não ter nenhuma alteração. git diff HEAD^ HEADvai mostrar as mudanças reais entre as versões
RubenLaguna
157
Supondo que "versão atual" seja o diretório ativo (modificações não confirmadas) e "última versão" seja HEAD(últimas modificações confirmadas para a ramificação atual), basta
git diff HEAD
O crédito para o seguinte vai para o usuário Cerran.
E se você sempre pular a área de preparação com -aa confirmação, poderá simplesmente usá-lo git diff.
Sumário
git diff mostra alterações sem etapas.
git diff --cached mostra alterações faseadas.
git diff HEAD mostra todas as alterações (em etapas e em etapas).
E se você sempre pular a área de preparação com -aa confirmação, poderá simplesmente usá-lo git diff. <1> git diffmostra alterações sem etapas . <2> git diff --cachedmostra alterações faseadas . <3> git diff HEADmostra todas as alterações (em etapas e em etapas). Fonte: git-diff (1) Página do manual
Cerran
1
Essa deve ser a resposta aceita, pois responde à intenção da pergunta.
tgoneil 19/09/19
Qual é o nome da "versão atual não preparada" no git? Existe realmente um nome?
Mathieu CAROFF
118
Como apontado em um comentário de amalloy , se por "versões atual e última" você quer dizer o último commit e o commit antes disso, você pode simplesmente usar
Era isso que eu estava procurando. Ótima resposta.
CodeManiak 19/01
12
Use git show HEAD~1para mostrar o último, mas um commit e git show HEAD~2etc. para confirmações mais antigas. Mostrar apenas um único arquivo via git show HEAD~2 my_file.
Florian Brucker
60
Diferença entre o último mas um commit e o último commit (mais o estado atual, se houver):
git diff HEAD~
ou mesmo (mais fácil de digitar)
git diff @~
onde @é o sinonimo HEADda ramificação atual e ~significa "me dê o pai da revisão mencionada".
Eu gosto bastante git diff HEAD^(e não a HEAD~forma equivalente ). É um pouco mais fácil de lembrar para um "git velho" como eu ;-)
sxc731
3
A cenoura é um problema em alguns terminais. É bom ter a opção
light24bulbs
1
A resposta pode ser melhorada, explicando o que isso significa ~e @.
Bob Stein
1
Se quisermos apenas verificar o que foi confirmado no último commit, não use isso (pois alterações sujas afetam o diff). Uma sintaxe mais curta que realmente diff HEAD^ HEADdeveria ser git diff @^!. Veja git-scm.com/docs/gitrevisions parar1^!
Johnny Wong
@JohnnyWong Obrigado pelo esclarecimento. Mencionei "estado atual" para não confundir os leitores.
Primeiro, use "git log " para listar os logs do repositório.
Agora, selecione os dois IDs de confirmação, pertencentes às duas confirmações. Você deseja ver as diferenças ( exemplo - Confirmação mais frequente e mais antiga (conforme sua expectativa da versão atual e de alguma versão antiga) ).
Respostas:
Eu realmente não entendo o significado de "última versão".
Como o commit anterior pode ser acessado com HEAD ^, acho que você está procurando algo como:
A partir do Git 1.8.5,
@
é um alias paraHEAD
, então você pode usar:O seguinte também funcionará:
Se você quiser saber a diferença entre head e qualquer commit, você pode usar:
E isso iniciará sua ferramenta visual diff (se configurada):
Como a comparação com o HEAD é o padrão, você pode omiti-lo (como apontado pelo Orient ):
Advertências
~
caractere deve ser usado em vez de^
.fonte
@
é um alias paraHEAD
. E desde~
e^
são os mesmos quando só vai um commit para trás, achogit diff @~..@
muito mais fácil de digitar.git show
é ainda mais fácil, já que@~..@
é a coisa padrão a ser mostrada.git show
apenas imprime a mensagem de confirmação, ela não gera uma diferença das alterações específicas, pelo menos no Git 2.5.4 (Apple Git-61), portanto, na verdade, não seria uma resposta à pergunta do OP.git show
é que, seHEAD
for um commit de mesclagem, você não obterá o que espera, pois o próprio commit de mesclagem pode não ter nenhuma alteração.git diff HEAD^ HEAD
vai mostrar as mudanças reais entre as versõesSupondo que "versão atual" seja o diretório ativo (modificações não confirmadas) e "última versão" seja
HEAD
(últimas modificações confirmadas para a ramificação atual), bastaO crédito para o seguinte vai para o usuário
Cerran
.E se você sempre pular a área de preparação com
-a
a confirmação, poderá simplesmente usá-logit diff
.Sumário
git diff
mostra alterações sem etapas.git diff --cached
mostra alterações faseadas.git diff HEAD
mostra todas as alterações (em etapas e em etapas).Fonte: Página de manual do git-diff (1) - Cerran
fonte
-a
a confirmação, poderá simplesmente usá-logit diff
. <1>git diff
mostra alterações sem etapas . <2>git diff --cached
mostra alterações faseadas . <3>git diff HEAD
mostra todas as alterações (em etapas e em etapas). Fonte: git-diff (1) Página do manualComo apontado em um comentário de amalloy , se por "versões atual e última" você quer dizer o último commit e o commit antes disso, você pode simplesmente usar
fonte
git show HEAD~1
para mostrar o último, mas um commit egit show HEAD~2
etc. para confirmações mais antigas. Mostrar apenas um único arquivo viagit show HEAD~2 my_file
.Diferença entre o último mas um commit e o último commit (mais o estado atual, se houver):
ou mesmo (mais fácil de digitar)
onde
@
é o sinonimoHEAD
da ramificação atual e~
significa "me dê o pai da revisão mencionada".fonte
git diff HEAD^
(e não aHEAD~
forma equivalente ). É um pouco mais fácil de lembrar para um "git velho" como eu ;-)~
e@
.diff HEAD^ HEAD
deveria sergit diff @^!
. Veja git-scm.com/docs/gitrevisions parar1^!
Você também pode fazer o seguinte:
Compare com o commit anterior
Compare com os dois commits atuais e anteriores
fonte
Basta usar a
cached
bandeira se você adicionou, mas ainda não confirmou:fonte
Rápido e simples, supondo que você seja o mestre:
Exemplo:
fonte
Primeiro, use "
git log
" para listar os logs do repositório.Agora, selecione os dois IDs de confirmação, pertencentes às duas confirmações. Você deseja ver as diferenças ( exemplo - Confirmação mais frequente e mais antiga (conforme sua expectativa da versão atual e de alguma versão antiga) ).
Em seguida, use:
ou
fonte
Se o commit principal é apontado pelo HEAD, você pode fazer algo assim:
Diferença entre o primeiro e o segundo commit:
Diferença entre o primeiro e o terceiro commit:
Diferença entre o segundo e o terceiro commit:
E assim por diante...
fonte
Eu uso o Bitbucket com o Eclipse IDE com o Eclipse EGit in instalado.
Eu comparo um arquivo de qualquer versão de seu histórico (como SVN ).
Menu Explorador de projetos → Arquivo → clique com o botão direito do mouse em → Equipe → Mostrar no histórico .
Isso trará o histórico de todas as alterações nesse arquivo. Agora Ctrlclique e selecione quaisquer duas versões → "Compare umas com as outras" .
fonte
Isso também funcionará para tags (remova o 'uniq' abaixo e outras partes, se você precisar ver todas as alterações):
O abaixo é o mesmo, e isso pode ser útil para integração contínua (IC) para microsserviços em um repositório monolítico:
(Crédito - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )
fonte