2014-09-30 21 views
9

推送到bitbucket。origin/branch_name和branch_name之間的區別?

如果我這樣做:git push origin origin/branch_name我的承諾沒有推。

Total 0 (delta 0), reused 0 (delta 0) 

如果我做我的git push origin branch_name提交被推:

Counting objects: 160, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (13/13), done. 
Writing objects: 100% (20/20), 2.10 KiB | 0 bytes/s, done. 
Total 20 (delta 6), reused 0 (delta 0) 

那麼什麼是原點/在branch_name的前面是什麼意思?爲什麼這很重要?

回答

15

你要記住,有不同類型的分支:

  • (純)當地分支,即你犯分行,
  • 生活在遠程存儲庫中的分支缺少更好的術語。您可能會在遠程名稱下知道遠程存儲庫,如origin。但是從存儲庫的角度來看,這樣一個分支是本地。歡迎使用分佈式版本控制! :)
  • 遠程跟蹤分支機構。也簡單地稱爲遠程分支,如Pro Git book,但我覺得這句話令人困惑; 遠程跟蹤分支更準確。他們是特殊的本地分支機構,其唯一目的是反映分支機構的狀態,該分支機構在與服務器進行上次通信時位於遠程存儲庫中。特別是,你不能提交這種類型的分支。

這裏,branch_name本地分支,而origin/branch_name遠程跟蹤分支;它反映了住在origin的相應分支的狀態。

運行

git fetch 

右後遠程跟蹤分支origin/master和相應分支,居住在origin應該是完全同步。它不應該是一個驚喜,那麼,

git push origin origin/branch_name 

不壓任何東西:你基本上試圖推的東西已經存在於相應分支,居住在origin的祖先。

然而,如果你當地分支,branch_name,是領先了一個或更多的提交,

enter image description here

然後運行

git push origin branch_name 

將推包含在branch_name但沒有提交在分支,住在origin

enter image description here

0

原點是什麼在GitHub上的遠程存儲的

沒有起源是什麼是本地計算機

上,當你提交第一個你是當你把起源分支名本地提交到您的計算機

存儲你是推到github上

+2

github進入這個遊戲? 'git'允許許多遠程服務器,github只是其中之一。 – 2014-09-30 16:11:34

0
  • origin/branch_name的一個分支在遠程機器上
  • 只是branch_name是在本地機器上的一個分支
2

使用圖形樹查看器(如gitk --all)會告訴你,那origin/mybranchmybranch可能有所不同。

origin只是默認名稱克隆遠程,這(在你的情況下)包含一個分支mybranch(就像你的本地倉庫)

所以,當你問到推origin/mybranchorigin,你正在同步origin遙控器,因此它不會做任何事情(幸運的是遙控器總是與自己同步)。

名稱origin是任意的,在克隆時可能已使用--origin標誌設置。