2017-07-17 75 views
2

我已經設置了我目前的分支dev推到refs/remotes/test與以下git push --set-upstream origin dev:test如何設置當前分支(dev)推到ref /遠程/測試與git推只?

.git/config樣子:

[remote "origin"] 
    url = https://[email protected]/appulocal/test_st.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "dev"] 
    remote = origin 
    merge = refs/heads/test 

但是當我做git push它不會從本地devtest遠程。 的Git的bash顯示消息:

fatal: The upstream branch of your current branch does not match 
the name of your current branch. To push to the upstream branch 
on the remote, use 

    git push origin HEAD:test 

To push to the branch of the same name on the remote, use 

    git push origin dev 

To choose either option permanently, see push.default in 'git help config'. 

,這樣如何解決這個只上遠程執行git push我當前分支dev推向test

+0

'要永久選擇任一選項,請參閱'git help config'中的push.default。 – smarber

回答

0

其實你已經設置了dev拉到refs/remotes/test。這就是該分支的merge選項管轄的內容。這有點令人困惑,因爲這是使用push命令設置的;但是一組不同的配置選項決定了推送行爲的方式。

事情是,git檢查一些事情來決定如何處理推送,而我們大多數人習慣的行爲是默認設置,當它們都沒有設置時... 但是 git isn如果分支名稱不匹配,則不願意依賴該默認值,因爲它認爲這可能是您嘗試使用的兩種不同配置之間的不明確。

對於您的情況,您希望爲您的dev分支指定推送目標test。有幾種方法可以解決這個問題,但我想不出任何沒有副作用,當你在不同的分支並且說git push

假設你只推到一個遠程 - 和它的你拉同一個 - 你可以設置push.default配置值

git config push.default upstream 

這消除了「同名」的檢查。 (請注意,它將取消所有分支機構的檢查;但只要您打算總是推送到您在pull期間合併的任何分支即可)。官方文檔認爲這僅適用於單一遠程工作流程。

如果您想要更精確地指定什麼會推到哪裏,您可能只需在push命令行中指定refspecs。