在解决冲突之后如何针对“他们的”版本git-diff文件

时间:2015-02-12 07:12:06

标签: git git-merge githooks git-diff pre-commit-hook

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

当某人执行“git pull”时,钩子需要处理这种情况。或者' git merge some_branch',获取最新的restricted_file.txt但是something_else.txt会导致冲突。

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

此时,执行预提交挂钩并识别将提交restricted_file.txt。 我们希望仅在文件与其来源相同时才允许提交' git pull'或者' git merge' (换句话说,如果他保留"他们的#34;版本)。

是否有人知道是否可以确定文件是否与他们的#34;他们相同?在解决冲突期间?

与以下不存在的命令等效的内容:

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

1 个答案:

答案 0 :(得分:4)

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

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