解决冲突后,如何根据"theirs"版本对文件进行 git 比较



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

当有人执行"git pull"或"git merge some_branch",获得最新的restricted_file.txt,但something_else.txt导致冲突时,钩子需要处理这种情况。

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

此时,执行预提交挂钩,它确定restricted_file.txt将被提交。只有当文件与"git pull"或"git merge"中的文件相同时(换句话说,如果他保留了"他们的"版本),我们才允许提交。

有人知道在冲突解决过程中是否可以确定文件是否与"他们的"相同吗?

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

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

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

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

最新更新