Eu apaguei um arquivo com o Git e depois efetuei o commit, então o arquivo não está mais na minha cópia de trabalho. Desejo examinar o conteúdo desse arquivo, mas não realmente restaurá-lo. Como posso fazer isso?
105
git show HEAD^:path/to/file
Você pode usar um identificador de commit explícito ou HEAD~n
para ver versões mais antigas ou se houve mais de um commit desde que você o excluiu.
path/to/file
é o caminho completo do início do projeto (diretório superior do repositório).fatal: Invalid object name 'HEAD^'.
(devo mencionar que tenho apenas "commit inicial")Se este for um arquivo que você excluiu há um tempo e não deseja buscar uma revisão , você pode usar (o arquivo é nomeado
foo
neste exemplo; você pode usar um caminho completo):A
rev-list
invocação procura todas as revisões de,foo
mas lista apenas uma. Visto querev-list
lista em ordem cronológica reversa, então o que lista é a última revisão que mudoufoo
, que seria o commit que foi excluídofoo
. (Isso é baseado na suposição de que git não permite que um arquivo excluído seja alterado e ainda assim permaneça excluído.) Você não pode apenas usar a revisão querev-list
retorna como está porquefoo
não existe mais lá. Você deve solicitar aquele imediatamente anterior que contém a última revisão do arquivo, portanto, o^
ingit show
.fonte
**/foo
se não souber o caminho (isso funcionará para o comando rev-list, mas não para o comando show. No entanto, com o commit do comando rev-list você pode então encontrar o caminho).Já que você pode não se lembrar do caminho exato, você pode obter o sha1 do git log e então simplesmente emitir
fonte
git whatchanged --no-abbrev
isso fornece uma saída semelhante a git (ou svn) log.