这是我之前提出的另一个问题的后续。
在被编辑之前,最初创建的文件something
被重命名为somethingelse
,可以在这里观察到:
git mv something somethingelse
然后该文件somethingelse
被重命名回something
第二次 vim 编辑之前:
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
我认为这是在第 1 行增加了 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 diff
重命名检测阈值git status
。
由于我们在两种情况下都添加了 4 个字节,Git 的行为不应该相同,但是以不同的方式,或者换行符与此有关吗?