2013-04-05 82 views
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>

回答

2

如果你改变你的push.defaultnothing gitconfig,那么你将需要指定所有分支上每一次<remote_name><remote_branch_name>

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

设置这个你应该得到的,当你混帐推以下类似的错误后。

致命错误:您没有指定任何推送参数,并且push.default为 “nothing”。

更新:

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

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

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

+0

我可以为只有一个特定的远程(甚至远程分支?) – logcat 2013-04-07 10:55:24

+0

我只是删除该分支的跟踪分支信息,所以它不知道在哪里推。然后你总是需要说'git push origin master'(从项目的.git/config中删除[branch =“master”]) – lebreeze 2013-04-07 11:01:37

+0

当我删除这里的远程跟踪分支时http://stackoverflow.com/a/3046478/ 289686,git推仍然推动。但从配置中删除[分支]有帮助。我无法默认推送,但可以显式repo和分支名称。感谢帮助。 – logcat 2013-04-07 11:07:51

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'仍将在输出中列出。

+0

为什么你需要取消设置远程。 .push'? – jszakmeister 2013-04-07 10:59:18

+0

仍然出现在git远程显示 logcat 2013-04-07 10:59:50

+0

@jszakmeister:因为如果设置了它,它将被用作默认的refspec推送。 – 2013-04-07 11:01:26

1

这不是完全清楚你想要什么,但如果你想禁止裸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 \"[email protected]\" ; }; _" 

然后git p会拒绝时,在命令行中没有指定其他命令行参数上主推的时候。否则,它会使用推送默认值。

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