簡體   English   中英

將分支合並推送到Github

[英]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會將默認設置更改為簡單。

資源:

它們與您在命令中給出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 clonegit push -u ...這很可能已經設定好了。

使用git config branch.master.merge驗證它,它應輸出類似refs/heads/master

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM