将"重命名"文件的内容将被版本化

时间:2014-07-30 14:39:03

标签: git

愚蠢的问题可能,但我想确定:

即使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

2 个答案:

答案 0 :(得分:3)

是的,git将继续跟踪NEW.xls文件的内容。您始终可以使用--follow选项查看更改的完整历史记录。有关--followhttp://git-scm.com/docs/git-log的使用情况,请参阅http://thisbythem.com/blog/preserving-history-when-renaming-files-in-git/以获得更全面的解释。

答案 1 :(得分:1)

是的,数据是正确的。

git会根据旧文件(已删除)与新文件(已创建)之间的相似性自动尝试检测重命名的文件。您所做的与将旧文件重命名为新名称然后更改其内容没有什么不同。如果内容的变化足够小,则会将其检测为重命名。如果没有,它将被检测为已删除的文件+新文件。

git将文件检测为重命名是一件好事,因为您可以稍后跟踪(使用git blame)文件中每行的来源(即添加它的提交和由谁),甚至如果原点来自文件具有不同名称的位置。