Existe um comando no Git para ver (despejado no stdout ou em $PAGER
ou $EDITOR
) uma versão específica de um arquivo específico?
1510
Existe um comando no Git para ver (despejado no stdout ou em $PAGER
ou $EDITOR
) uma versão específica de um arquivo específico?
git checkout <sha1-of-the-commit-you-need>
depoisgit checkout HEAD
Respostas:
Você pode usar
git show
com um caminho da raiz do repositório (./
ou../
para o caminho relativo):Substitua
REVISION
por sua revisão real (pode ser um SHA de confirmação do Git, um nome de tag, um nome de filial, um nome de confirmação relativo ou qualquer outra maneira de identificar uma confirmação no Git)Por exemplo, para visualizar a versão do arquivo
<repository-root>/src/main.c
de 4 confirmações atrás, use:O Git para Windows requer barras, mesmo em caminhos relativos ao diretório atual. Para mais informações, consulte a página de manual
git-show
.fonte
Fazer isso por data é assim:
Observe que
HEAD@{2013-02-25}
significa "onde o HEAD estava em 25/02/2013" neste repositório (usando o reflog ), não "o último commit antes de 25-02-2013 neste ramo no histórico".fonte
master
em vez deHEAD@{2013-02-25}
, se você estiver em um ramogit log --since='2016-04-28 23:59:59 +0100'
?Se você gosta de GUIs, pode usar o gitk:
inicie o gitk com:
Escolha a revisão na parte superior da tela, por exemplo, por descrição ou data. Por padrão, a parte inferior da tela mostra o diff dessa revisão (correspondente ao botão de opção "patch").
Para ver o arquivo da revisão selecionada:
fonte
gitk REVISION /path/to/file
. Isso pode ser útil quando você deseja verificar uma determinada versão, por exemplo.Você também pode especificar um
commit hash
(muitas vezes também chamadocommit ID
) com ogit show
comando .Em poucas palavras
git show <commitHash>:/path/to/file
Passo a passo
git log /path/to/file
commit hash
tal comocommit 06c98...
(06c98 ... sendo o hash cometer)commit hash
git show <commitHash>:/path/to/file
usando ascommit hash
etapas 3 epath/to/file
1.Nota: adicionar
./
ao especificar um caminho relativo parece importante, iegit show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html
.fonte
git show <SHA1> --name-only
para obtê-lo.Além da resposta de Jim Hunziker ,
você pode exportar o arquivo da revisão como,
Espero que isto ajude :)
fonte
Para ver rapidamente as diferenças com as revisões mais antigas de um arquivo:
fonte
git log -p
mostrará não apenas os logs de confirmação, mas também o diff de cada confirmação (exceto as confirmações de mesclagem). Então você pode pressionar/
, digite o nome do arquivo e pressioneenter
. Pressionen
oup
para ir para a ocorrência seguinte / anterior. Dessa forma, você não apenas verá as alterações no arquivo, mas também as informações de confirmação.fonte
git log -pm
que também mostraria confirmações de mesclagem.git log -p -- filename.txt
para restringir o histórico apenas ao arquivo desejado.Você pode usar um script como este para despejar todas as versões de um arquivo para separar arquivos:
por exemplo
Obtenha o script aqui como resposta a outra pergunta semelhante
fonte
git_root
,git_log_short
Egit_log_message_for_commit
estão faltando.MANEIRA 1: (prefiro assim)
git reflog
git diff-tree --no-commit-id --name-only -r <commitHash>
git show <commitHash>:/path/to/file
MANEIRA 2:
git reflog
git reset --hard %commit ID%
fonte
Auxiliar para buscar vários arquivos de uma determinada revisão
Ao tentar resolver conflitos de mesclagem, esse auxiliar é muito útil:
GitHub upstream .
Uso:
Resultado: o seguinte contém as versões alternativas dos arquivos:
Dessa forma, você mantém a extensão do arquivo para que seu editor não se queixe e possa encontrar facilmente o arquivo antigo ao lado do mais novo.
fonte