2013-04-05 130 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列表上談論它可能會說服某人爲你實現一個功能。不過,你需要一個引人注目的用例。