Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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_Branch_Git Remote - Fatal编程技术网

Git 将推送限制到分支的某些远程位置

Git 将推送限制到分支的某些远程位置,git,branch,git-remote,Git,Branch,Git Remote,我有两个遥控器,一个用于生产,一个用于GitHub。由于我必须将某些文件推送到不能登陆GitHub的产品中,我想限制一个分支以避免发生意外 有没有办法告诉我的git客户端,它应该永远不要将分支“部署”推到远程“github”上,而只将该分支推到“生产”上。您可以设置一个服务器端预接收钩子,该钩子适用于尝试推送到您的回购的每个人,根据当前分支接受或拒绝推送,或者类似的本地预推钩子。后者的例子可以找到。就是你要找的。您可以设置一个服务器端预接收钩子,该钩子适用于尝试推送到您的回购的每个人,根据当前分

我有两个遥控器,一个用于生产,一个用于GitHub。由于我必须将某些文件推送到不能登陆GitHub的产品中,我想限制一个分支以避免发生意外

有没有办法告诉我的git客户端,它应该永远不要将分支“部署”推到远程“github”上,而只将该分支推到“生产”上。您可以设置一个服务器端预接收钩子,该钩子适用于尝试推送到您的回购的每个人,根据当前分支接受或拒绝推送,或者类似的本地预推钩子。后者的例子可以找到。

就是你要找的。您可以设置一个服务器端预接收钩子,该钩子适用于尝试推送到您的回购的每个人,根据当前分支接受或拒绝推送,或者类似的本地预推钩子。后者的示例可以找到。

是正确的,前提是您的Git至少为1.8.2(如果不是,则应升级:-))。然而,链接的示例是错误的

使用两个参数调用,这些参数提供:

  • 远程设备的名称,如果使用了命名的远程设备,则为URL
  • URL(如果使用了命名远程,则扩展命名远程的结果)
要推送的内容(即您在运行
git push
时指定的内容)在钩子的标准输入上提供给钩子。这就是两个链接示例都被破坏的地方

如果您运行:

git push github refspec1 refspec2 ... refspecN
git push github
然后,被推送的引用就是这个命令行上给出的引用

如果您运行:

git push github refspec1 refspec2 ... refspecN
git push github
(如果没有参照规范),要推送的分支集是。。。这很复杂,但在现代Git中,它默认为当前分支

示例预推钩子假定只推当前分支。因为这是现代的默认设置,所以在您意外运行之前,示例可能会正常工作:

git push github deploy
(打开时,说,
master
),然后他们就不会了,你可能会很难过。:-)

要修复它们,请使用githook,其内容如下:

#! /bin/sh
[ "$1" = github ] || exit 0 # allow if not pushing to github
while read lref lhash rref rhash; do
    case "$lref" in
    refs/heads/deploy)
        echo "error: attempt to push 'deploy' branch to github" 1>&2
        exit 1;;
    esac
done
这将允许:

git push github master:deploy
(在远程
github
上创建或更新
deploy
,但使用本地分支
master
,而不是本地分支
deploy
),同时禁止:

git push github deploy:oops
(它将本地
deploy
推送到名为
oops
的分支)

如果你想有更复杂的规则,把它们写下来。请注意,如果要阻止使用
git pushhttps://github.com/...
要绕过自己的钩子,可以选中
$2
以及
$1
。当然,如果您决心绕过自己的钩子,您可以轻松运行
git push--no-verify
来禁用钩子。

是正确的选择,前提是您的git至少为1.8.2(如果不是,您应该升级:-))。然而,链接的示例是错误的

使用两个参数调用,这些参数提供:

  • 远程设备的名称,如果使用了命名的远程设备,则为URL
  • URL(如果使用了命名远程,则扩展命名远程的结果)
要推送的内容(即您在运行
git push
时指定的内容)在钩子的标准输入上提供给钩子。这就是两个链接示例都被破坏的地方

如果您运行:

git push github refspec1 refspec2 ... refspecN
git push github
然后,被推送的引用就是这个命令行上给出的引用

如果您运行:

git push github refspec1 refspec2 ... refspecN
git push github
(如果没有参照规范),要推送的分支集是。。。这很复杂,但在现代Git中,它默认为当前分支

示例预推钩子假定只推当前分支。因为这是现代的默认设置,所以在您意外运行之前,示例可能会正常工作:

git push github deploy
(打开时,说,
master
),然后他们就不会了,你可能会很难过。:-)

要修复它们,请使用githook,其内容如下:

#! /bin/sh
[ "$1" = github ] || exit 0 # allow if not pushing to github
while read lref lhash rref rhash; do
    case "$lref" in
    refs/heads/deploy)
        echo "error: attempt to push 'deploy' branch to github" 1>&2
        exit 1;;
    esac
done
这将允许:

git push github master:deploy
(在远程
github
上创建或更新
deploy
,但使用本地分支
master
,而不是本地分支
deploy
),同时禁止:

git push github deploy:oops
(它将本地
deploy
推送到名为
oops
的分支)

如果你想有更复杂的规则,把它们写下来。请注意,如果要阻止使用
git pushhttps://github.com/...
要绕过自己的钩子,可以选中
$2
以及
$1
。当然,如果您决定绕过自己的钩子,您可以轻松地运行
gitpush--no-verify
来禁用钩子