解决冲突后如何 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
引用。)
在预提交挂钩中,我想确保没有人(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
引用。)