【问题标题】:What does it mean when Git says 'rewrite' or 'rename' in a commit message?Git 在提交消息中说“重写”或“重命名”是什么意思?
【发布时间】:2023-03-24 19:50:01
【问题描述】:

运行git commit 会导致以下输出:

[manu@host] git: git commit -a -m "StreamIt instrumentation"
[master 263410f] StreamIt instrumentation
62 files changed, 6117 insertions(+), 5748 deletions(-)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/ClusterBackend.java (91%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/ClusterCodeGenerator.java (95%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/cluster/code/FlatIRToCluster.java (94%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/common/ToCCommon.java (92%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/flatgraph/ScheduledStaticStreamGraph.java (93%)
rename Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/sir/lowering/fission/{StatelessDuplicate.java => HorizontalFission.java} (98%)
rewrite Code/ALCHEMY/streamit-src-2.1.1/src/at/dms/kjc/sir/lowering/partition/dynamicprog/DynamicProgPartitioner.java (93%)
  • git 将文件报告为“重写”时是什么意思?
  • 相关百分比的含义是什么?
  • 为什么在此次提交中更改的 62 行中只有百分比与这些行相关?

【问题讨论】:

  • 我相信你已经做了rebase,不是吗?
  • @OleksandrKravchuk 我真的在这里复制并粘贴了我所做的:只有 git commit
  • 那些是二进制文件吗?如,不可读的文本?通常我会在 git 比较编译后的文件时看到这种输出。
  • 有时您可以在 Windows 上看到对文本 (PHP) 文件的重写——至少我有。
  • 不,它们只是带有 java 代码的 ascii 文件

标签: git git-commit


【解决方案1】:

Git 使用启发式方法来确定更改是否是文件的重命名或复制,以及是否是文件的“重写”。粗略地说,如果新旧版本的差异大于新版本本身,那就是“重写”。

这是针对 git 更改源文件的原始用例进行调整的,通常是进行本地化更改:由于它基于逐行差异,因此重新缩进源文件之类的操作可以触发它。此外,由于它是动态确定的,因此“-b”和“-w”等差异选项可以改变对更改是否为重写(或复制,或重命名)的评估。

百分比是 git 的“相异指数”(相对于重命名或复制的百分比“相似指数”)。可能类似于文件中已更改的行的百分比。

【讨论】:

  • 好的,谢谢你的解释。我在 Eclipse 中对这个 java 文件执行了 Ctrl+Shift+F,即自动格式化,因此文件有很多变化。 git 输出是否仅显示重写和重命名的文件而不是具有“小更改”的文件,这意味着在我的情况下,62 个中的所有其他更改都是次要的?
  • 是的,提交后的摘要列出了添加、删除、重命名、复制或重写的文件(它是git diff --summary HEAD^.. 的输出)。因此,其他更改是对文件的“正常”更改 - 不足以触发重写启发式。
  • 好的,但是这含义是什么?它会以某种方式修改日志显示吗?如果foo.txt 显示65% 的重写,那么之前版本的foo.txt 是否不会在历史记录中显示为同一个文件,即使它没有被重命名?换句话说,这是出于什么目的的启发式?这在官方 Git 文档中是在哪里解释的?您的回答对开始确实很有帮助,但它留下了更多未回答的问题……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 2019-03-04
  • 2014-11-01
  • 2018-03-20
相关资源
最近更新 更多