2013-12-11 240 views
0

我使用Git作爲我的VCS。我已經簽出了主文件並從主文件創建了本地分支以用於特定票證(例如,fileuploadbranch)。對代碼進行了更改,添加了更改爲索引的文件。然後使用從本地分支推送到遠程主分支

git commit -m "xxxx" 

現在,我嘗試使用

git push -u origin --all 

所以在我的到位桶託管服務推到遠程主提交更改,我可以看到兩個分支,即主站和fileuploadbranch。

我意識到這是由於使用「--all」選項給git push。這使得所有分支被推送到遠程。

所以,現在我試着用一推

git push -u origin master 

我相信這將僅被移動遠程主。但在bitbucket提交視圖中,它顯示右側的本地分支名稱(fileuploadbranch),它表明推送來自本地分支。

  1. 即使我們將它從本地分支中推送出來,遠程主服務器是否可以使用此更改?
  2. 爲什麼它在提交視圖的bitbucket中顯示本地分支名稱(RHS)?

任何幫助將不勝感激!!! ...

感謝

回答

1

如果你想要把您當地的分行您呼叫file_upload_branch(我加了下劃線這裏可讀性,注意,下面這影響到每一個出現),但把它master遙控器上:

git push origin file_upload_branch:master # see below about -u 

push這裏的最後一個參數被稱爲「的Refspec」,和你拼出來有兩部分:本地端標識符(通常是分支名稱)和遠程端標識符(另一個可能不同的分支名稱)。冒號:用於分隔兩者。

如果您只使用一個名稱,而不使用冒號,那麼git會假設您希望在每一面都使用相同的名稱。 (你剛纔說的不是你想要的。)

如果你完全沒有使用refspec(並且不使用像--all這樣的選項),git會根據各種配置變量選擇要推送的內容。如果你沒有設置它們,所有當前版本的git都使用matching這個方法:你的git,做push操作,詢問對方的git「你現在有哪些分支」,把結果列表和看到你有哪些地方分支匹配,並推動這些分支。

--all作爲(僞)參考,您的一方只是要求將您擁有的每個分支名稱都推送到遠程(同您發現的)相同的名稱。

(語法:branchname,以refspec的形式給出,要求遠程給刪除命名的分支。你可能會想用這個遙控器上刪除file_upload_branch。)

如果你設置了配置變量push.defaultupstream,這改變了push的默認動作沒有的Refspec使用的「上游」的名字當前分支。也就是說,如果你在file_upload_branch和遠程(origin)它的「上游」的名字是master,平地,如果你寫

git push origin 

將採取行動:

git push origin file_upload_branch:master 

這是其中-u參數進入:在file_upload_branch成功推送到master後,在遠程origin,git push設置 file_upload_branch的「上游」爲origin/master。你只需要每個分支做一次;設置了上游,並將push.default設置爲upstream,未來的推送將自動「做你想做的事」。


在GIT中版本2.0,用於remote.pushdefault默認值將改變到simple。如果您現在將您的--globalremote.pushdefault設置爲simple,則您將準備好(因此不會受此影響)此更改。或者,如果您更喜歡upstream作爲個人默認值,您可以設置它,它仍然可以在2.0中工作。

注意remote.pushdefault可以在兩個您的每個用戶(即,--global)GIT中的配置設置以及在每個回購配置。無論何時設置,per-repo配置都會覆蓋全局配置。您還可以設置一個相當令人眼花繚亂的額外配置陣列,但我不會做任何這些:-):remote.origin.pushbranch.file_upload_branch.remotebranch.file_upload_branch.pushremote都可以影響git push的行爲。有關完整的詳細信息,請參見git config documentation

相關問題