【发布时间】:2017-09-16 16:39:58
【问题描述】:
这是another question I asked before的后续。
在被编辑之前,最初创建的文件something被重命名为somethingelse,可以观察到here:
git mv something somethingelse
文件 somethingelse 然后在第二次 vim 编辑之前将 renamed back 变为 something:
git mv somethingelse something
基本上在下面portion of the code:
# 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 给出的一个很好的回答/评论here 在一定程度上解释了这一点,考虑到git status 的git diff 重命名检测阈值。
由于我们在两种情况下都添加了 4 个字节,Git 的行为不应该相同,但是方式不同还是换行符与此有关?
【问题讨论】:
-
为什么修改文件以添加
abc最终会被报告为一个新文件和一个已删除的具有另一个名称的文件?你也重命名了文件吗?您一直在说并提到“重命名”,但您的问题实际上并没有表明您正在重命名文件。请明确说明您在做什么。 -
文件在编辑之前被重命名,这是第一次发生在line 34
-
但问题中没有提到这一点。如果有先前的信息(即使,如果这是您要发布后续问题的问题),您需要在此处发布。 Stack Overflow 不是一个线程讨论板,每个问题都应该独立存在。
-
对于小文件,重命名检测总是很不稳定。
标签: git github git-diff git-status git-mv