解决冲突后如何 git-diff 文件与 "theirs" 版本

How to git-diff a file against "theirs" version after resolving conflicts

在预提交挂钩中,我想确保没有人(1 人除外)能够更改 restricted_file.txt

钩子需要处理当有人执行'git pull'或'git merge some_branch'时,获取最新的restricted_file.txt但something_else.txt导致冲突

他解决了冲突并保留 restricted_file.txt 的 "theirs" 版本,执行 'git add' 和 'git commit'。

此时会执行pre-commit hook,识别restricted_file.txt将被提交。 我们希望仅当文件与来自 'git pull' 或 'git merge' 的文件相同时才允许提交(换句话说,如果他保留 "theirs" 版本)。

有谁知道在冲突解决期间是否可以确定文件是否与 "theirs" 相同?

相当于以下不存在的命令:

git diff --cached --against_theirs -- restricted_file.txt

git diff --cached MERGE_HEAD -- restricted_file.txt 将完成这项工作。这是有效的,因为(因此,当且仅当)MERGE_HEAD 包含正在合并的提交的 SHA-1 ID,即 "theirs" 版本。

(因冲突或 --no-commit 合并而停止时,git merge 将 SHA-1 写入特殊的 MERGE_HEAD 引用。)