Usando o Git, como você pode encontrar a diferença entre a versão atual e a última?
git diff last version:HEAD
Usando o Git, como você pode encontrar a diferença entre a versão atual e a última?
git diff last version:HEAD
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:
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
~caractere deve ser usado em vez de ^.@é 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.
git showé ainda mais fácil, já que @~..@é a coisa padrão a ser mostrada.
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.
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
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).Fonte: Página de manual do git-diff (1) - Cerran
-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
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
git show
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.
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".
git diff HEAD^(e não a HEAD~forma equivalente ). É um pouco mais fácil de lembrar para um "git velho" como eu ;-)
~e @.
diff HEAD^ HEADdeveria ser git diff @^!. Veja git-scm.com/docs/gitrevisions parar1^!
Basta usar a cachedbandeira se você adicionou, mas ainda não confirmou:
git diff --cached --color
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:
git diff <commit_id1> <commit_id2>
ou
git difftool <commit_id1> <commit_id2>
Se o commit principal é apontado pelo HEAD, você pode fazer algo assim:
commit1 -> HEAD
commit2 -> HEAD~1
commit3 -> HEAD~2
Diferença entre o primeiro e o segundo commit:
git diff HEAD~1 HEAD
Diferença entre o primeiro e o terceiro commit:
git diff HEAD~2 HEAD
Diferença entre o segundo e o terceiro commit:
git diff HEAD~2 HEAD~1
E assim por diante...
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" .
Isso também funcionará para tags (remova o 'uniq' abaixo e outras partes, se você precisar ver todas as alterações):
git diff v1.58 HEAD
O abaixo é o mesmo, e isso pode ser útil para integração contínua (IC) para microsserviços em um repositório monolítico:
git diff v1.58 HEAD --name-only | sort -u | awk 'BEGIN {FS="/"} {print $1}' | uniq
<Folder Name>
(Crédito - https://dzone.com/articles/build-test-and-deploy-apps-independently-from-a-mo )