Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 Branch_Git Push - Fatal编程技术网

git推送至远程,但不';不要创建新分支

git推送至远程,但不';不要创建新分支,git,git-branch,git-push,Git,Git Branch,Git Push,是否有办法git push,但如果远程中不存在分支,则抛出错误或退出非零,而不是在服务器上创建新分支 用例如下所示。我正在创建脚本,以帮助自动化我公司的scm工作流程。如果有人不小心在脚本中输入了错误的分支名称,我不希望在远程服务器上创建新的分支。我已经可以手动检查远程分支是否存在,但我想知道git是否支持此功能。您需要更改git配置中push.default的设置。查看以完全按照您想要的方式配置它(默认为分支、推送等) 不,目前没有一种方法可以通过调用git push来实现这一点 可能的解决

是否有办法
git push
,但如果远程中不存在分支,则抛出错误或退出非零,而不是在服务器上创建新分支


用例如下所示。我正在创建脚本,以帮助自动化我公司的scm工作流程。如果有人不小心在脚本中输入了错误的分支名称,我不希望在远程服务器上创建新的分支。我已经可以手动检查远程分支是否存在,但我想知道git是否支持此功能。

您需要更改git配置中push.default的设置。查看以完全按照您想要的方式配置它(默认为分支、推送等)

不,目前没有一种方法可以通过调用
git push来实现这一点


可能的解决方法:

可以通过以下方式检查远程分支的存在:

#!/bin/bash
if ! git ls-remote --exit-code $remote /refs/heads/$branch
then
    echo >&2 "Error: Remote branch does not exist"
    exit 1
fi
exit 0
如果需要,也可以将其包括在
预推
挂钩中。类似这样的内容(放入
.git/hooks/pre-push
):

这将导致所需的行为:

$ git push origin master:branch_that_does_not_exist
Remote branch does not exist, not pushing
error: failed to push some refs to 'git@github.com:some/repository.git'

如果您有权访问服务器,您还可以创建一个
pre receive
钩子来拒绝创建新分支。

不幸的是,这对我不起作用,因为我将在同一推送中提供多个分支引用规范,并且不需要逐个签出多个分支,要利用push.default,为什么不重命名拼写错误的分支并再次删除push,然后删除旧分支?我不希望脚本做出任何决定。我不想让脚本决定您要使用不同的分支名称或删除分支。如果脚本的假设无效,我希望它只是中止
$ git push origin master:branch_that_does_not_exist
Remote branch does not exist, not pushing
error: failed to push some refs to 'git@github.com:some/repository.git'