繁体   English   中英

排除git push的配置引用

[英]Exclude configured refs for git push

当我调用git remote show <remote_name>我会在下面看到

  Local branches configured for 'git pull':
    master           merges with remote master
  Local refs configured for 'git push':
    master           pushes to master           (up to date)

如何排除已配置的推送? 所以从master分支的git push将抛出错误,只有push将使用显式远程名称git push <remote_name> <remote_branch_name>

如果将push.default的push.default更改为nothing则每次在所有分支上都需要指定<remote_name><remote_branch_name>

git config --global push.default nothing (删除--global for project specific config)

设置此项后,您应该在git push时收到类似于以下内容的错误。

致命的:你没有指定任何refspecs推,而push.default是“没什么”。

更新:

如果您只想禁用特定分支的自动推送,我只需删除跟踪配置。

一种方法是编辑项目的.git/config并删除[branch="branchname"]配置。

或者以编程方式: git config --unset branch.branchname.remote ,它删除分支配置的remote=remotename部分。

确保您没有配置远程配置的push配置:

git config --unset remote.<remote_name>.push

配置push.defaultnothing

git config push.default nothing

不幸的是,似乎git remote show <remote_name>似乎没有考虑config.push设置(它总是假设'匹配')所以Local refs configured for 'git push'仍然会在输出中列出。

它并不完全清楚你想要什么,但是如果你想要一起禁用裸git push ,你可以这样做:

git config --local push.default nothing

这意味着裸git push将不会采用默认的refspec,您必须指定它。 我能想到的另一件事就是创建一个别名,然后用它来推送。 所以,你的.gitconfig是这样的:

[aliases]
p = "!_() { cur=$(git symbolic-ref HEAD); if test \"$cur\" = refs/heads/master -a -z \"$1\"; then { echo \"please specify push target\"; exit 1; } ; fi; git push \"$@\" ; }; _"

然后当在主服务器上时,当命令行上没有指定其他命令行参数时, git p将拒绝推送。 否则,它将使用推送默认值。

我相信你现在可以通过git实现所有灵活性。 如果你需要更多的东西,或许在git列表上谈论它可能会说服某人为你实现一个功能。 但是,你需要一个引人注目的用例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM