我在我们的一台服务器上遇到了以下问题:我希望用户定期从 Git 仓库拉取数据(使用 cronjob),但只进行快进拉取(服务器上的内容有时也会发生变化)。使用现代 Git(1.6.6 及更新版本),我只需执行
git pull --ff-only origin master
但由于我只安装了 1.6.0.2,所以我无法做到这一点。我想我可以通过以下方法解决这个问题
git config merge.ff only
git pull origin master
但事实证明,这不起作用(没有错误,但仍然合并)。有什么想法可以解决这个问题吗?
答案1
我找到了一个解决方案,即手动检查当前分支(master
)是否实际上是要合并的分支的后代(origin/master
):
git fetch origin
if [ $(git branch --contains master -a | grep origin/master) ]
then
git merge origin/master
else
echo "No fast-forward, aborting merge"
fi