当目录已经移动到不同目录时如何合并git中的文件

Ank*_*sal 3 git merge

我在从 master 分支中取出的分支上工作了一段时间。现在我需要合并我的更改。更改位于特定文件夹中,例如 admin,它是我项目中的子目录。

当我从 master 分支获取最新的时,这个目录被移动到另一个位置,例如 master/admin。因此,现在当我尝试合并时,它将所有与管理相关的文件显示为新文件。

我想避免任何手动合并操作,并希望有一种方法可以让 git 知道这不是新文件夹,而是已移动的现有文件夹。

Cod*_*ard 5

因此,现在当我尝试合并时,它将所有与管理相关的文件显示为新文件。

Restore the old branch并使用git mv而不是简单的mv命令移动文件。


Why do i have to use git mv and not just mv?

Git 不跟踪文件名。它将内容存储在.pack文件中,将文件名(元数据)存储在.idx文件中,而不是内容本身的一部分。

要更好地了解它,请阅读 git 如何存储文件名
https://git-scm.com/book/en/v2/Git-Internals-Git-Objects#Tree-Objects

Git 无法跟踪移动的文件,除非您使用git mv. 如果您只是移动或重命名它们,git 会将它们作为新文件进行跟踪,并删除旧文件。


How to track changes of the moved files?

# you have to use the --follow flag
git log --follow ./path/to/file
Run Code Online (Sandbox Code Playgroud)