前言
使用Git的时候,假如我们创建了a.js,经过版本迭代以后需要更改名字,或者改变目录(位置发生改变)。这时候变更后的文件就不会有以前的记录。通过 git log --follow的操作可以把这类重命名/移动后的文件历史给关联起来。
实践
实践操作记录在https://github.com/jmx164491960/git-code-study下的git-follow-study目录下。
我们先在d1文件夹下创建一个文件,提交:

然后把它从d1文件夹迁移到d2,提交:
这时候在sourceTree上可以看到一个紫色的“R”图标,这是“已更名”的意思

这时候打开git命令行
输入 git log /git-follow-study/d2/demo.js,只能看到一次文件的提交,即创建时的提交内容:

下面就是追溯到文件重命名前的历史记录,只需要加上--follow,

这证明git可以通过识别文件的内容变更判断一个文件是新创建的,还是重命名的。此时我产生一个疑问:假如我把a.js命名为b.js,并增加一行代码。那么git还能识别吗,尝试了一下,是不可行的。也难怪,git只能根据内容是否完全相同这一条件,才能判断出一个文件是新建还是重命名。所以我们以后假如需要重命名文件,切记重命名后就要提交一份,而不要混杂其他的改动
前言
使用Git的时候,假如我们创建了a.js,经过版本迭代以后需要更改名字,或者改变目录(位置发生改变)。这时候变更后的文件就不会有以前的记录。通过 git log --follow的操作可以把这类重命名/移动后的文件历史给关联起来。
实践
实践操作记录在https://github.com/jmx164491960/git-code-study下的git-follow-study目录下。

我们先在d1文件夹下创建一个文件,提交:
然后把它从d1文件夹迁移到d2,提交:

这时候在sourceTree上可以看到一个紫色的“R”图标,这是“已更名”的意思
这时候打开git命令行

输入 git log /git-follow-study/d2/demo.js,只能看到一次文件的提交,即创建时的提交内容:
下面就是追溯到文件重命名前的历史记录,只需要加上--follow,

这证明git可以通过识别文件的内容变更判断一个文件是新创建的,还是重命名的。此时我产生一个疑问:假如我把a.js命名为b.js,并增加一行代码。那么git还能识别吗,尝试了一下,是不可行的。也难怪,git只能根据内容是否完全相同这一条件,才能判断出一个文件是新建还是重命名。所以我们以后假如需要重命名文件,切记重命名后就要提交一份,而不要混杂其他的改动