在预提交钩子中,我想确保没有人(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
答案 0 :(得分:4)
git diff --cached MERGE_HEAD -- restricted_file.txt
将完成这项工作。这是有效的,因为(因此,当且仅当)MERGE_HEAD
包含被合并的提交的SHA-1 ID,即“他们的”版本。
(停止冲突或--no-commit
合并后,git merge
会将SHA-1写入特殊MERGE_HEAD
引用。)