在git commit之前让其自动执行一次git pull命令
文章目录
- 背景原因
- 编写脚本
- 测试效果
背景原因
有时候可以看到项目的git 提交日志里好多 Merge branch ‘master’ of …记录。这些记录是怎么产生的呢?
是因为在本地操作 git add . 、 git commit -m "xxxxx"时,没有提前进行git pull操作,而且此时远程仓库代码比本地仓库的新,就会在执行git commit -m "xxxxx"时提示,一堆信息(本地仓库代码版本滞后于远程仓库版本),总之不让提交(其实已经提交到本地仓库了),此时再使用git pull时,就会弹出一个编辑框,让输入合并分支的日志,此时一般就 :wq就可以了,完事后,就可以看到拉取代码成功了,再进行git push。推送成功了,此时git log,就可以看到提交记录里多了一条Merge branch ‘master’ of …的记录。如何避免出现这样的Merge branch ‘master’ of …的记录。下面进行操作。
编写脚本
通过git bash在 项目的.git/hooks目录下,创建脚本文件pre-commit
touch pre-commit
#!/bin/sh
# 检查是否有 staged 的更改
if [ -n "$(git diff-index --name-only --cached HEAD)" ]; then
echo "Running git pull to update your local changes before commiting..."
git pull
if [ $? -ne 0 ]; then
echo "Failed to pull changes. Fix conflicts and try again."
exit 1
fi
fi
exit 0
测试效果
可以看到,即使忘了在执行commit之前git pull下代码,通过与之关联的钩子脚本可以替我们自动完成此步骤。