移动到其他文件夹时保留git仓库中的文件历史记录

时间:2018-03-24 11:14:46

标签: git

我的git file1.txt中有repo,最初的回购结构是

repo/
     file1.txt
     directory1/

file1.txt有两次提交(当我尝试使用以下命令时显示两次提交)

git log -p file1.txt

后来我使用git命令将file1.txt移动到directory1

git mv file1.txt directory1

然后新的回购结构是

repo/

     directory1/file1.txt

但在移动该文件后,它不会使用

显示这两个提交
 git log -p directory1/file1.txt

任何人都可以在移动这样的文件时帮助保存历史记录,还是有其他方法可以移动文件?

2 个答案:

答案 0 :(得分:2)

Git没有明确记录移动(例如SVN就是这样)。每次提交都是整个州的快照。因此,如果您使用git mv A B移动文件或使用mv A B && git add A B移动文件,或以任何其他方式移动文件并添加此更改,则无关紧要 - 结果将完全相同。

Git提供了以各种方式查看历史记录的工具。在查看数据时,是否即时确定特定更改是否为重命名。

使用--follow git log选项将启用重命名检测。

git log --follow -- path/to/file

有时,当重命名文件时,也可能会更改其内容。根据内容的更改量,重命名检测可能不起作用 - 它成为重命名,删除和无关添加的问题。要更改需要匹配的文件的多少才能被视为重命名,请使用-M选项。

git log -M40% --follow -- path/to/file

-M选项也适用于其他命令,例如git diffgit show

还有-C,除了检测到副本外,它等同于-M

如果需要重命名文件并且其内容也会发生很大变化,那么如果可能的话,就是在单独的提交中进行重命名和内容修改。这样就可以在不需要调整的情况下检测重命名。

man git-logman git-diffman git-show的更多信息。

答案 1 :(得分:1)

保留历史记录,forwardedIP默认情况下不会显示。您可以使用git log标记来跟踪重命名或移动文件之外的更改:

--follow