git diff 的输出包含一个标题,如下所示:
index f8fdb16de,78132574a..000000000
在git help diff
中,是这样解释的:
2. It is followed by one or more extended header lines (this example shows a merge with two parents):
index <hash>,<hash>..<hash>
mode <mode>,<mode>..<mode>
new file mode <mode>
deleted file mode <mode>,<mode>
我想使用 git diff 创建补丁,我希望这些补丁具有可预测的格式,以便可以进行比较。为此,我需要在“index ..” header 中为散列设置一个固定长度。
如何控制这些散列的长度?
我试过--abbrev=7,但是好像没有效果。
我仍然看到我的补丁是这样更新的:
-index 52a2a35..7813257 100755
+index 52a2a357e..78132574a 100755
最佳答案
--abbrev
选项仅适用于“diff-raw 格式输出和 diff-tree 标题行”。对于标准补丁输出,您可以使用 git diff --full-index
获取完整的、未缩写的 blob ID。来自man page :
--full-index
Instead of the first handful of characters, show the full pre- and post-image blob object names on the "index" line when generating patch format output.
这将产生如下输出:
diff --git a/foo b/foo
index c7bc37b70c7e29e3e4ed048c22ca3929367aa171..ab10096fde76d8c1d6172bd09d0dc4a18fb2c2fa 100644
Binary files a/foo and b/foo differ
关于git - 如何控制 git diff header 中的哈希长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188267/