git - 如何控制 git diff header 中的哈希长度

标签 git git-diff

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/

相关文章:

git - 无法使用 egit 提交到 github repo

laravel - 我应该检查 Bootstrap /缓存 - Laravel 5.8 吗?

git - 无法通过SSH访问远程存储库(权限被拒绝(公钥))

Git diff 不显示新添加文件的更改

Git diff 所有本地未提交的更改

git-gui 报告它每次运行时都有 256 个松散对象,并建议进行压缩。如何解决?

git - 如何在 IntelliJ 的内置终端中更改 git 的语言?

ruby-on-rails - 我如何将 `git diff` 更改为 rails 5.2 凭据?

git - 如何在 2 个不同的本地分支机构之间对同一文件调用 git diff?

git - git add 后文件未显示在 git diff 中。我怎么知道它会被提交?