2012-01-19 189 views
2

讓我們假設我在當地的ABC分支機構branch_Abranch_BGit,推送到遠程

repo_A,之間有什麼區別:

- git push origin 
- git push origin branch_A 
- git push origin branch_A:branch_A 

原因問題是下面的事件序列,我覺得這是令人驚訝的:行爲的

11:05:56 ~/blah $ git push origin 
Counting objects: 31, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (13/13), done. 
Writing objects: 100% (17/17), 1.28 KiB, done. 
Total 17 (delta 10), reused 0 (delta 0) 
To ssh://[email protected]/myrepo.git 
    141fc0d..d42c3b6 branch_B -> branch_B // While i was in branch_A 

11:06:02 ~/blah $ git branch 
    branch_A 
* branch_B 
+0

這裏有點令人困惑的是,當這些存儲庫中的分支名稱出現時,您將存儲庫稱爲「repo_A」和「repo_B」。 –

+0

@MarkLongair,你是對的。已更新 – JAM

回答

1

的默認行爲git push origin(如果您還沒有自定義配置選項push.default)是推送所有「匹配」分支。這意味着只要具有該名稱的分支已經存在於原產地中,則每個本地分支都被推送到具有相同名稱的同名分支。在這種情況下,您似乎在origin以及本地都有branch_B分支。你引用

兩個其他變體:

git push origin branch_A 
git push origin branch_A:branch_A 

....實際上等同 - 如果你不包括操作的Refspec從目的地名稱分隔源名稱:,它假定你的意思是源和目標中的同名。

+0

非常好的答案。非常感謝你 – JAM