git - git pre-push hook 合并冲突
问题描述
我试图在每次推送之前构建我的乳胶文件,所以我使用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 文件上遇到合并冲突。我不明白。
解决方案
听起来您正在将 PDF 作为pre-push
钩子中存储库的一部分签入。pre-push
钩子不能影响推送的内容;它只能接受或拒绝它。
发生的事情是您尝试在未更新 PDF 文件(版本 A)的情况下推送版本,您的钩子正在修改提交以更新 PDF 文件(版本 B),版本 A 的推送成功,然后您尝试再次拉取远程版本(版本 A)。由于您的本地分支 (B) 和远程分支 (A) 现在不同,因此拉取创建了一个合并提交。
PDF 并非设计为面向行的,因此您会在旧 PDF 和新 PDF 之间遇到合并冲突。
您可以做两件事来改善这一点:不要尝试在预推送挂钩中修改内容(如果推送不是最新的或不完整的,则拒绝推送),不要签入像 PDF 这样的构建产品进入您的存储库。与两个面向行的源文件相比,您更有可能在两个二进制或非面向行的文件上发生冲突。
推荐阅读
- android - 如何为由android java中的简单光标适配器制作的listview上的视图(如按钮)设置唯一ID?
- swift - xcode 9中的iCarousel错误
- php - 如何使用php在url中传递多个参数
- sql-server-2008 - 使用配置文件中的连接字符串在 SSIS 包中获取连接时出错
- sql-server - SSMS:无法在 SSMS Explorer 中显示 XML
- python - 为什么团队名称没有显示在 django html 中?
- javascript - 在子查询中续集“WHERE”子句
- scala - 同步写入文件
- ios - Pod 安装错误 Mapbox
- css - CSS:元素在文本上滑动