在每次提交之前强制执行rebase(git)

时间:2017-09-26 07:51:51

标签: git git-config

在你判断我(或许)愚蠢的问题之前,我不得不提到我是git的新手。我在一个我们有很多分支机构的环境中工作,其中一个被认为是主线。因为我们有不同的团队在项目上工作,所以我们将jenkins配置为在任何分支上的每次提交后构建和运行测试。但是问题就出现了,人们在他们的分支上提交而没有使用主线进行更改,因此测试有时会失败,因为在主线中对所提到的测试进行了修改,人们没有在他们的分支上进行修改。有没有办法我可以配置git来拒绝任何提交,如果它没有与主线分支重新组合?

更新

我正在尝试类似(pre-commit hook):

#!/bin/sh

if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
then
    exi1
fi

但是if总是返回true。命令git rev-list --left-right --count mainbranch...@ | cut -f1 > 0应该返回(并且确实)我的mainbranch提前的提交数量(如果> 0则需要重新设置)。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

您似乎有一个简单的shell脚本问题。你的命令

if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0

被解释为“运行git rev-list,将其传递给cut,并将输出写入名为0的文件”,这将始终成功。

您想要的是“运行git rev-list,将其移至cut,并将结果与​​数字0进行比较”:

if [[ "$(git rev-list --left-right --count mainbranch...@ | cut -f1)" > 0 ]]