【问题标题】:Is there any way to allow to push only specified local branch to specified remote?有没有办法只允许将指定的本地分支推送到指定的远程?
【发布时间】:2017-03-30 03:24:28
【问题描述】:

说明

这里有 2 个遥控器,originfoobar

  • origin有两个分支,masterxxxxx
  • foobar 只有一个分支master

origin 是我的主要遥控器,我有与 origin 相同的本地分支,
所以有masterxxxxx

有时我需要将 xxxxx 推送到 foobar/master(不是 foobar/xxxxx),
通过输入命令git push foobar xxxxx:master

但是我怕把master误推到foobar/master。

所以问题是

有什么办法可以防止master推送foobar?
或者,有什么办法只允许 xxxxx 推送到 foobar?

属于origin的分支可能会被增加,我不想将任何其他分支推送到foobar,但只需要将xxxxx作为master推送到foobar。

【问题讨论】:

    标签: git git-branch git-push git-remote


    【解决方案1】:

    您可能需要在配置中设置显式推送映射:

    git config remote.foobar.push refs/heads/xxxxx:refs/heads/master
    

    然后在没有明确分支规范的情况下使用 git push foobar。

    此外,您可以设置 pre-push 钩子来验证正在推送的提交。

    【讨论】:

    • 看起来不错! :D 为了安全起见,我尝试准备预推钩来严格禁止,这并不困难并且效果很好。但是为了避免错误,配置看起来就足够了。谢谢!
    • 啊,只有一件事。 git config remote foobar refs/heads/xxxxx:refs/heads/master 没有成功。所以我将此命令更改为git config remote.foobar.push refs/heads/xxxxx:refs/heads/master。我的 git 版本是 2.9.0。
    【解决方案2】:

    默认情况下,git push 会将本地分支与本地分支正在跟踪的远程分支同步。

    如果您通过git checkout --track -b foobar_master foobar/master 签出本地分支,当您运行git push 时,foobar_master 分支将与 foobar/master 同步。

    请谷歌“远程跟踪分支”了解更多详情。

    顺便说一句,您可以运行git branch -vv 来确认您的本地分支正在跟踪哪个远程分支。

    【讨论】:

    • 我不需要跟踪foobar/master。我需要推送到foobar/master 的分支是xxxxx,这个分支跟踪origin/xxxxx。但我不知道 -vv 选项,它会帮助我。谢谢你的信息。
    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 2020-06-11
    • 2012-09-02
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2021-03-05
    相关资源
    最近更新 更多