愚蠢的问题可能,但我想确定:
即使GIT没有将文件夹信息和文件名存储为这样的AFAIK,它仍然会识别出文件名已经发生在它实际上没有发生的地方,我删除了一个旧文件,然后放入一个新文件(具有类似内容) )。
问题很简单,git中的数据是否正确,因为新文件是正在使用的文件? (化妆品"重命名"我可以忍受)
$ git status
# On branch fooBar
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
# deleted: src/main/resources/OLD.xls
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/main/resources/NEW.xls
$ git add .
$ git status
# On branch fooBar
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: src/main/resources/OLD.xls -> src/main/resources/NEW.xls
答案 0 :(得分:3)
是的,git将继续跟踪NEW.xls文件的内容。您始终可以使用--follow
选项查看更改的完整历史记录。有关--follow
和http://git-scm.com/docs/git-log的使用情况,请参阅http://thisbythem.com/blog/preserving-history-when-renaming-files-in-git/以获得更全面的解释。
答案 1 :(得分:1)
是的,数据是正确的。
git会根据旧文件(已删除)与新文件(已创建)之间的相似性自动尝试检测重命名的文件。您所做的与将旧文件重命名为新名称然后更改其内容没有什么不同。如果内容的变化足够小,则会将其检测为重命名。如果没有,它将被检测为已删除的文件+新文件。
git将文件检测为重命名是一件好事,因为您可以稍后跟踪(使用git blame
)文件中每行的来源(即添加它的提交和由谁),甚至如果原点来自文件具有不同名称的位置。