簡體   English   中英

git checkout –b#分支名稱#起源/#分支名稱#

[英]git checkout –b #branch name# origin/#branch name#

通常,當我想切換到遠程存儲庫上而不是本地存儲庫上的另一個分支時,我使用以下命令: git checkout origin/#branch name#而不是git checkout –b #branch name# origin/#branch name#我在互聯網上看到了這種用法。

這兩個命令有什么區別?

后者創建一個跟蹤遠程分支的本地分支,應用於編輯。 前者只應用於快速瀏覽遠程分支。 Got僅允許您在本地分支上進行更改,因此如果使用前者,則將無法提交。 最新版本的git允許您使用速記git checkout #branchname# ,如果您有一個遠程遙控器,它將自動創建一個分支跟蹤origin/#branchname#

前者將簽出遠程分支,這通常會導致以下警告:

您處於“分離頭”狀態。 您可以環顧四周,進行實驗性更改並將其提交,也可以放棄在此狀態下所做的任何提交,而不會通過執行另一次簽帳而影響任何分支。

如果要創建新分支以保留創建的提交,則可以(現在或以后)通過再次將-b與checkout命令一起使用來進行。 例:

  git checkout -b new_branch_name 

當您簽出沒有指向它的本地分支的提交時,您最終得到一個分離的HEAD 這意味着盡管可以執行任何操作,但是在提交更改時,沒有分支指向您創建的提交。 指向它的唯一指針是HEAD,它是一個瞬態指針,每當切換分支時,該指針都會更改。

因此,使用分離的HEAD進行提交本質上意味着,如果您以后不創建指向它們的分支,則您創建的所有提交都將丟失。

如警告所示,您可以使用git checkout -b branch_name來做到這git checkout -b branch_name 這將創建一個新的分支,該分支指向HEAD並簽出該分支,從而使您回到安全的狀態。

現在,當你這樣做git checkout -b <branch> origin/<branch>你基本上做到兩者兼而有之:您檢查出origin/<branch>創建一個名為本地分支機構<branch>指向該簽出的版本(並且您也切換到該分支)。 因此,您立即陷入安全狀況。

為此,命令與此相同:

# check out the remote branch into a detached HEAD
git checkout origin/<branch>
# create a new branch from the HEAD and check that branch out
git checkout -b <branch>

並且與此相同:

# create a new local branch pointing to the remote branch
git branch <branch> origin/<branch>
# check out that branch
git checkout <branch>

順便說一句。 處理新的遠程分支時,有一個有用的快捷方式。 例如,如果遠程服務器具有分支foo而您還沒有本地分支foo ,則可以執行git checkout foo而Git將識別出您可能想創建一個本地分支foo來跟蹤遠程分支的origin/foo

暫無
暫無

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

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