2017-01-06 29 views
2

我有一個Git倉庫使用沒有問題幾年。爲了方便,我使用SmartGit來完成大部分任務。Git推HEAD - >主儘管set-upstream-to和push.default

我最近注意到,在從開發分支進行SmartGit推送時,它提供的用於確認的對話框顯示「將當前分支'dev'推送到'master'」,而不是像以前那樣開發dev。

我切換到Git的CMD線來比較的行爲,並發現它也想推到大師:

$ git push --dry-run 
To https://github.com/some_repo.git 
    c00bb9e..6a8ade4 HEAD -> master 

用的Refspec工作推進符合市場預期,但我似乎無法找到一個方法來告訴SmartGit使用該refspec或如何決定它將推動開發 - >主。

$ git push origin dev --dry-run 
To https://github.com/some_repo.git 
    428dd9b..6a8ade4 dev -> dev 

Git的地位和裁判表現如預期:

$git status 
On branch dev 
Your branch is ahead of 'origin/dev' by 1 commit. 
    (use "git push" to publish your local commits) 
nothing to commit, working directory clean 

$ git symbolic-ref HEAD 
refs/heads/dev 

我的配置push.default被設置爲「簡單」,這應該意味着電流將推動同名遠程和抱怨,如果不匹配。

git config push.default 
simple 

我也復位「上游到」和靜止的純的git推最終想要做HEAD - >主。

$git branch --set-upstream-to origin/dev 
Branch dev set up to track remote branch dev from origin by rebasing. 

我出的什麼可能是這個原因,以及如何回到一個簡單的混帳推去分支匹配當前的想法和/或如何得到SmartGit停止提供推電流 - >主人。

Git版本:2.5.0

SmartGit版本:8.0.3#8135

回答

3

git-push(1)

在命令行沒有指定與<refspec>...參數或--all推什麼,--mirror,--tags選項,該命令通過查詢remote.*.push配置查找默認<refspec>配置,如果未找到,則可以使用榮譽push.default conf配置以決定推送什麼(請參閱git-config(1)瞭解push.default的含義)。

這聽起來像你有remote.dev.push設置爲HEAD

+1

優秀! 事實上,這種回購我的.git/config文件有: [遠程 「起源」] \t URL = https://github.com/somewhere/somerepo.git \t取= +裁判/頭/ *:裁判/遙控器/原產地/ * \t push = HEAD:refs/heads/master 不知道該推線如何到達那裏。隨着它消失,一切都恢復正常。 – mmeyer