use*_*815 3 git git-diff pre-commit-hook git-merge githooks
在预提交钩子中,我想确保没有人(除了 1 人)能够更改 reserved_file.txt
该钩子需要处理当有人执行'git pull'或'git merge some_branch',获取最新的restricted_file.txt但something_else.txt导致冲突的情况。
他解决了冲突并保留了“他们的”restricted_file.txt 版本,执行了“git add”和“git commit”。
此时,pre-commit 钩子被执行,它标识出restricted_file.txt 将被提交。我们希望仅当文件与来自 'git pull' 或 'git merge' 的文件相同时才允许提交(换句话说,如果他保留了“他们的”版本)。
有人知道在解决冲突期间是否可以确定文件是否与“他们的”相同?
相当于以下不存在的命令:
git diff --cached --against_theirs -- restricted_file.txt
Run Code Online (Sandbox Code Playgroud)
git diff --cached MERGE_HEAD -- restricted_file.txt会做的工作。这是有效的,因为(因此,也当且仅当)MERGE_HEAD包含被合并的提交的 SHA-1 ID,即“他们的”版本。
(在因冲突或--no-commit合并而停止时,git merge将该 SHA-1 写入特殊MERGE_HEAD引用。)
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |