[英]Push branch merge to Github
我在本地有一個master
和一個test
分支,並與我的Github帳戶同步。 自從我完成它以后,我已將test
分支合並為master
:
git checkout master
git merge test
現在我想把這個合並推到Github,我不知道這三個命令中的哪一個:
git push
git push origin
git push origin master
我應該用。 哪個是正確的,它們有什么不同?
如果你沒有在git push
指定git push
遙控器或分支,它將默認采用origin
第二部分是一個更復雜的,取決於你擁有的git配置。 取決於您在git配置中的push.default
選項的不同行為將以某種方式表現。 這些是push.default
的可能值以及git push
如何表現:
沒有 - 除非明確給出refspec,否則不要推送任何東西(錯誤輸出)。 這主要是針對那些希望通過始終明確避免錯誤的人。
current - 推送當前分支以更新接收端具有相同名稱的分支。 適用於中央和非中央工作流程。
上游 - 將當前分支推回到分支,該分支的更改通常集成到當前分支(稱為@ {upstream})。 如果您要推送到通常從中拉出的相同存儲庫(即中央工作流),則此模式才有意義。
簡單 - 在集中式工作流程中,像上游一樣工作,如果上游分支的名稱與本地分支不同,則可以更加安全地拒絕推送。
當推送到與您通常拉出的遙控器不同的遙控器時,請作為當前工作。 這是最安全的選擇,適合初學者。
此模式將成為Git 2.0中的默認模式。
匹配 - 推送兩端具有相同名稱的所有分支。 這使得您正在推動的存儲庫記住將被推出的分支集合(例如,如果您總是在那里推送maint和master而沒有其他分支,您推送的存儲庫將具有這兩個分支,以及您的本地maint和master將被推到那里)。
要有效地使用此模式,您必須確保在運行git push之前准備好推出所有要推出的分支,因為此模式的重點是允許您一次性推送所有分支。 如果您通常只在一個分支上完成工作並推出結果,而其他分支未完成,則此模式不適合您。 此模式也不適合推入共享中央存儲庫,因為其他人可能會在那里添加新分支,或者更新控制之外的現有分支的提示。
這是目前的默認設置,但Git 2.0會將默認設置更改為簡單。
資源:
push.default
) 它們與您在命令中給出Git的信息量不同,以及Git必須從您的配置中填寫多少信息,然后再回到Git的默認設置。 確切的行為也可能取決於您的Git版本。
在許多存儲庫中,這三個命令的行為方式相同。
以下是我的Git版本(1.8.3.2)中git-push
的文檔:
When the command line does not specify where to push with the
<repository> argument, branch.*.remote configuration for the current
branch is consulted to determine where to push. If the configuration is
missing, it defaults to origin.
所以,如果你有一個branch.master.remote
設置,這就是Git將使用的。 如果沒有,它會回落到origin
。 如果您通過clone
創建了本地副本,則可能已設置此項。 同樣,如果你做過類似git push -u origin master
事情,那么應該設置它。
您可以通過運行git config branch.master.remote
來驗證,它應輸出類似origin
。
更多來自文檔:
When the command line does not specify what to push with <refspec>...
arguments or --all, --mirror, --tags options, the command finds the
default <refspec> by consulting remote.*.push configuration, and if it
is not found, honors push.default configuration to decide what to push
(See gitlink:git-config[1] for the meaning of push.default).
同樣,如果你設置了remote.master.push
,那就是它將使用的內容。 再說一遍,如果你已經完成了git clone
或git push -u ...
這很可能已經設定好了。
使用git config branch.master.merge
驗證它,它應輸出類似refs/heads/master
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.