Lembre-se de uma coisa: O Git rastreia apenas o conteúdo do arquivo.
De Movendo arquivos seção do livro Pro Git v2:
Unlike many other VCS systems, Git doesn’t explicitly track file movement. If you rename a file in Git, no metadata is stored in Git that tells it you renamed the file. However, Git is pretty smart about figuring that out after the fact
E, mover e renomear é a mesma coisa no Git.
Então, o Git detecta que a movimentação / renomeação automática funciona somente sob a premissa de que esses arquivos não são modificados .
O Git faz estas coisas quando você move / renomeia apenas o arquivo:
- Um arquivo rastreado é excluído, o git obtém o SHA-1 do conteúdo desse arquivo, suponha que o valor seja
abc
. - Um arquivo untrack é adicionado, git calcula o SHA-1 do conteúdo desse arquivo, suponha que o valor seja
abc
também. - Se você confirmar neste momento, o git descobrirá que eles têm o mesmo valor SHA-1 e os tratará como uma renomeação.
Suponha que você modificou alguns arquivos rastreados e também os move para outra pasta. Então, infelizmente, o git não pode detectá-los como renomear / mover automaticamente quando commitar.
Se você realmente quer que o git rastreie renomear / mover automaticamente, você precisa fazer :
Certifique-se de NÃO modificar o (s) arquivo (s) e somente renomear / mover arquivo (s) em um commit.
Se você quiser modificar o arquivo e mover o arquivo ao mesmo tempo, e quiser que o git os detecte como renomear / mover usando o TortoiseGit, então no seu caso:
- Clique com o botão direito no arquivo e clique em
TortoiseGit -> Rename...
item do menu de contexto. - prefix
new_folder\
para o nome do arquivo, consulte: - confirmar
Nota: você precisa renomear os arquivos um por um. Suponha muito trabalho para fazer. Então, melhor renomear apenas o arquivo.
Nota2: Se você modificar muito no arquivo, o git não poderá descobrir que é um renomear / mover.