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'