有没有办法git push
,但是,如果遥控器中不存在分支,则抛出错误或退出非零而不是在服务器上创建新分支?
用例如下。我正在创建脚本来帮助自动化我公司的scm工作流程。如果有人意外错误地将分支名称输入到脚本中,我不希望在远程上创建新分支。我已经可以手动检查远程分支的存在,但我想知道git是否支持这个功能。
答案 0 :(得分:2)
不,目前无法通过拨打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
如果需要,也可以包含在pre-push
钩子中。像这样的东西(放在.git/hooks/pre-push
中):
#!/bin/sh
remote="$1"
url="$2"
while read local_ref local_sha remote_ref remote_sha
do
if ! git ls-remote --exit-code $url $remote_ref
then
echo >&2 "Remote branch does not exist, not pushing"
exit 1
fi
done
exit 0
这将导致所需的行为:
$ 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-recieve
挂钩以拒绝创建新分支。
答案 1 :(得分:0)
您需要在git config中更改push.default上的设置。查看git config documentation以完全按照您的需要进行配置(分支,推送等的默认设置)。