1

当我打电话时,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)

如何排除已配置的推送?所以git push从主分支会抛出错误,只有推送将具有明确的远程名称git push <remote_name> <remote_branch_name>

4

3 回答 3

2

如果您将 gitconfig 更改为push.defaultnothing那么您将需要每次都在所有分支上指定<remote_name>和。<remote_branch_name>

git config --global push.default nothing(删除项目特定配置的--global)

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

致命:您没有指定要推送的任何 refspec,并且 push.default 为“无”。

更新:

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

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

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

于 2013-04-07T10:54:31.123 回答
1

确保您没有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'仍然会在输出中列出。

于 2013-04-07T10:55:03.690 回答
1

目前还不完全清楚你想要什么,但如果你想一起禁用一个裸机git push,你可以这样做:

git config --local push.default nothing

这意味着 baregit 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当在 master 上的命令行上没有指定其他命令行参数时,然后将拒绝推送。否则,它将使用推送默认值。

我相信这就是你现在可以从 git 获得的所有灵活性。如果你需要更多的东西,也许在 git list 上谈论它可能会说服某人为你实现一个特性。不过,您将需要一个引人注目的用例。

于 2013-04-07T10:58:08.423 回答