Quando movo um arquivo no git usando o git-mv, o status mostra que o arquivo foi renomeado e, mesmo que eu altere algumas partes, ele ainda considera quase a mesma coisa (o que é bom porque me permite seguir o histórico) .
Quando copio um arquivo, o arquivo original tem um histórico que gostaria de associar à nova cópia.
Tentei mover o arquivo e tentar fazer o check-out novamente no local original - uma vez que o git movido não permita que eu faça o checkout do local original.
Eu tentei fazer uma cópia do sistema de arquivos e, em seguida, adicionar o arquivo - git a lista como um novo arquivo.
Existe alguma maneira de fazer com que o git grave uma operação de cópia de arquivo, da mesma maneira que registra a renomeação / movimentação de um arquivo, onde o histórico pode ser rastreado até o arquivo original?
diff.renames
comocopies
(por exemplo, 'git config diff.renames copies
'). Concordo que é um pouco contra-intuitivo.git log -L123,456:file.xyz
) que segue corretamente as renomeações, mas não as cópias, e você não pode passar --follow nesse caso; Além disso, AFAICT, isso não funciona com a culpa do git.19-05-20 2020: A solução a seguir tem as vantagens de não alterar o log do arquivo original, não criar um conflito de mesclagem e ser mais curta.
Você pode forçar o Git a detectar o histórico do arquivo copiado em três confirmações:
--no-ff
.(Os créditos vão para Raymond Chen .)
A solução anterior tinha quatro confirmações:
(Solução obtida em https://stackoverflow.com/a/44036771/1389680 .)
fonte
move
erename
?mv
para as duas operações? Eu estava usando 'mover' para o caso que pode envolver a alteração do diretório do arquivo e 'renomear' para o caso em que não ocorre.git mv orig new
? Por "leia o original", você quer dizercp new orig && git add orig
?