Meu repositório passou por mudanças como:
- ... alguns commits não relacionados ...
- Enviar novo arquivo
foo
com 100 linhas de conteúdo - ... commits intervenientes, alguns dos quais tocam
foo
... - Insira o conteúdo de
foo
no topo de um arquivo existentebar
egit rm foo
no mesmo commit - ... mais commits não relacionados ...
Agora quero ver o log do arquivo excluído foo
. Tudo o que li, incluindo no SO, diz que deveria ser possível git log -- foo
, mas esse comando não produz nenhuma saída.
Se eu encontrar o commit que inclui a exclusão foo
, posso git log 1234abcd -- foo
ver seu log, então acho que meu caminho para foo
não é o problema. Observe também que as git merge-base HEAD 1234abcd
saídas 1234abcd[...]
, então acho que devem provar que o commit está acessível em HEAD
. Observe que não há nenhum arquivo foo
em minha árvore de trabalho (óbvio, já que foi excluído). Usando Git 1.7.1.1 no OS X.
Por que não git log -- foo
funciona para mim e como posso corrigir isso? Obrigado!
git log --follow -- foo
ougit log --follow -M -- foo
? (para forçar a detecção de renomeação)--follow
mas lendohistory
que eu já fiz cd em outro lugar quando tentei, tornando o caminho inválido.git log --follow -- foo
funcionou quando tentei do ponto de partida certo. Eu acho que Git considerado rolandofoo
embar
como algum tipo de mudança de nome? Em qualquer caso, obrigado! Ficarei feliz em creditar isso se você postar novamente como uma resposta.--
é alterado para—
no título da pergunta ...Respostas:
Você deseja usar a
--follow
opção ongit log
, que é descrita na página de manual como:Efetivamente, isso não apenas permite que você veja o histórico de um arquivo renomeado, mas também permite que você visualize o histórico de um arquivo que não está mais na árvore de trabalho. Portanto, o comando que você deve usar deve ser semelhante a:
Atualizar:
Git 2.9+ já permitiu isso por padrão para todos
git diff
egit log
comandos:Obrigado a x-yuri pelo aviso!
fonte
--follow
parte. Eu só precisava adicionar--
. Estou correndogit-2.9.0
.