Git预推钩合并冲突

时间:2018-07-08 16:15:47

标签: git githooks

我正在尝试在每次推送之前构建乳胶文件,因此我使用了pre-push脚本:

#!/bin/sh

./compile y    # just does latex,bibtex,latex,latex
if [ "$?" -eq 0 ]; then
    git commit -a --amend --no-edit 
else
    echo "An error has occurred, check the logs in .bits"
fi

每次我推送时,它都会成功,但是当我提取时,我会在编译的pdf文件上遇到合并冲突。我不明白。

1 个答案:

答案 0 :(得分:1)

听起来好像您正在pre-push挂钩中将PDF作为存储库的一部分检入。 pre-push钩子不会影响所推送的内容;它只能接受或拒绝它。

正在发生的情况是,您尝试在不更新PDF文件的情况下推送版本(版本A),您的钩子正在修改提交以更新PDF文件(版本B),对于版本A推送成功,然后您正在尝试再次拉出远程版本(A版)。由于您的本地分支(B)和远程分支(A)现在有所不同,因此拉动会创建合并提交。

PDF并非设计为面向行的,因此您会在旧PDF和新PDF之间发生合并冲突。

您可以做两件事来使它变得更好:不要尝试在预推送挂钩中进行修改(如果推送不是最新的或不完整,请拒绝推送)并且不要签入构建产品像将PDF放入您的存储库。与两个面向二进制文件或非面向行的文件相比,与两个面向行的源文件相比,您更有可能发生冲突。