Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在每次提交前强制重新基(git)_Git_Git Config - Fatal编程技术网

在每次提交前强制重新基(git)

在每次提交前强制重新基(git),git,git-config,Git,Git Config,在你们评判我问了(也许)愚蠢的问题之前,我必须提到我是git的新手。我在一个环境中工作,我们有很多分支机构,其中一个被认为是主线。因为我们有不同的团队来处理这个项目,所以我们将jenkins配置为在任何分支上的每次提交之后构建和运行测试。但是问题来了,人们在没有使用主线重定基址的情况下在他们的分支上进行提交,因此测试有时会失败,因为在主线中为提到的测试推送了修改,而人们在他们的分支上没有修改。如果git没有使用主线分支重新设置基址,有没有办法配置git以拒绝任何提交 更新: 我目前正在尝试(预提

在你们评判我问了(也许)愚蠢的问题之前,我必须提到我是git的新手。我在一个环境中工作,我们有很多分支机构,其中一个被认为是主线。因为我们有不同的团队来处理这个项目,所以我们将jenkins配置为在任何分支上的每次提交之后构建和运行测试。但是问题来了,人们在没有使用主线重定基址的情况下在他们的分支上进行提交,因此测试有时会失败,因为在主线中为提到的测试推送了修改,而人们在他们的分支上没有修改。如果git没有使用主线分支重新设置基址,有没有办法配置git以拒绝任何提交

更新:

我目前正在尝试(预提交挂钩):

但是if总是返回true。命令
git rev list--left-right--count mainbrance…@|cut-f1>0
应该返回(它确实返回)我的mainbrance在前面的提交数量(如果>0,那么我需要重新设置基础)。
我做错了什么?

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

if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
解释为“运行
git rev list
,将其输送到
cut
,并将输出写入名为
0
”的文件,该操作将始终成功

您需要的是“运行
git rev list
,将其输送到
cut
,并将结果与编号
0
”进行比较:


首先,您不必重新设置分支的基础以使其更新;您还可以合并,这可能是一个更简单的选择。是的,您可能可以编写一个钩子来检查这一点,但是如果您只使用像GitHub这样的工具,它具有拉请求,您可以松散地强制功能分支与其目标是最新的。我们使用的是TFS。我会查一查是否有完成你提到的任务的指南。现在,我不知道怎么做:(有人能帮我在提交前用钩子强制执行重基吗?我不想不回答这个问题,但我真的认为你的问题不在于重基。我认为你的实际问题是,据我所知,你的测试与被测代码不在同一个分支或存储库中。你说«我们配置了jenkins在任何分支上的每次提交之后构建和运行测试»:这很完美。但是,每个分支都应该有这些测试的版本,并且Jenkins应该配置为运行分支中的测试,而不总是运行主线分支中的测试。
if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
if [[ "$(git rev-list --left-right --count mainbranch...@ | cut -f1)" > 0 ]]