这是 之前我问过的另一个问题 的跟进。
在被编辑之前,最初创建的文件
文件
如果此时我在代码中添加
我认为这是在第一行添加了4个字节,最终会导致以下结果:
突然间,Git会检测到重命名(包括编辑):
在被编辑之前,最初创建的文件
something
被重命名为 somethingelse
,可以 在这里 观察到。git mv something somethingelse
文件
somethingelse
在第二次vim编辑之前被重命名为something
。git mv somethingelse something
基本上在以下代码部分中:
# If you add something to the first line, the rename will not be detected by Git
# However, if you instead create 2 newlines and fill line 3 with new code,
# the rename gets detected for whatever reason
printf "\nCOMMAND: vim something\n\n"
vim something
如果此时我在代码中添加
abc
,我们最终会得到:First line of code. abc
我认为这是在第一行添加了4个字节,最终会导致以下结果:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: something
deleted: somethingelse
然后,如果我们在第三行添加一个换行符并输入abc(应该也是4个字节,如果我错了请纠正):
First line of code.
abc
突然间,Git会检测到重命名(包括编辑):
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: somethingelse -> something
这里这里@torek给出了一个好的回答/评论,从考虑git status
的 git diff
重命名检测门限方面,某种程度上解释了这个问题。
既然我们两种情况都添加了4个字节,为什么Git的行为不同,难道换行符与此有关吗?