git commit logs用花括号多次CREATE和COPY - 为什么?

时间:2013-08-16 07:13:27

标签: git git-commit

最近我分析了我本地仓库的提交日志,并注意到以下内容,我想知道这里发生了什么。任何人都可以给出解释此问题的网站的答案或指针吗?

假设我有以下文件结构:

/path/a.txt  
/path/b.txt  
/path/c.txt  
/path/d.txt  

当我提交时,我在日志中看到以下内容:

create mode 100644 path/a.txt
create mode 100644 path/b.txt
copy path/{a.txt => b.txt} (100%)
create mode 100644 path/c.txt
copy path/{a.txt => c.txt} (100%)
create mode 100644 path/d.txt
copy path/{a.txt => d.txt} (100%)

所有文件都是完全不同的内容。 那些大括号{=>}是什么意思?

Git版本:1.7.0.4(不要问我为什么我没有使用最新版本,它是客户端的服务器,我不能只安装最新版本。)

1 个答案:

答案 0 :(得分:1)

大括号只是一个简写,所以Git不必两次打印完整路径。

因此,copy path/{a.txt => b.txt}只是copy path/a.txt => path/b.txt的缩写。

这些行末尾的百分比告诉你第二个文件与第一个文件的相似程度(在这种情况下,它们完全相同,这就是Git认为你复制它们的原因)。

另请注意,这对提交内容没有影响,它只是一种纯粹用于输出的语义解释。提交的内容始终是所有跟踪文件的精确快照,而不保存移动或复制等任何元信息。