tft每日頭條

 > 生活

 > git 分支鎖定

git 分支鎖定

生活 更新时间:2024-08-12 22:02:14

git 分支鎖定(使用分支Git)1

本文是對git checkout命令的一次測試。它将會覆蓋使用舉例以及不太常見的邊緣案例。在Git術語中,“checkout”的意思就是對于一種實體的不同版本之間進行切換的操作。git checkout命令可以用于三種不同的實體:文件,commit,以及分支。作為對于checkout 含義的補充,短語“checking out”通常意味着執行git checkout 命令的這一行為。但對于本文檔的大多數讀者來說,checkout操作将主要使用于分支。

checkout分支類似于檢出一個分支中的某次舊的commit;然而,新的變更會被存儲在項目的曆史中,這也就意味着這并不是一個隻讀的操作。

檢出分支

git checkout命令可以切換通過git branch命令創建的分支。checkout一個分支,會更新當前的工作空間中的文件,使其與檢出分支的commit版本狀況保持一緻。這之後工作區中的所有變更都會被記錄在checkout出來的那個分支上。這一操作可以認為是在挑選你希望修改的工作分支。

相比于SVN的工作流,為每一個新功能的開發都建立一個獨立的分支是一個巨大的進步。這一特性足以在不用懼怕破壞現有功能的前提下随意實驗新的功能開發,還可以讓同一個開發者并行展開多個互不相關的新功能開發。甚至,這種簡單又輕松的分支模型,還促進了不少協作的工作流程的出現。

git checkout命令有時候會跟git clone命令相混淆。兩個命令中最為顯著的差别在于,git clone用于從遠程倉庫獲取代碼,而git checkout則用來在本地系統中業已存在的代碼庫中切換不同的版本。

使用:現有的分支

設想你正在工作的倉庫中含有一些現有分支,那麼你可以使用git checkout命令在這些分支之間進行切換。為了找出哪些分支是可用的,以及當前我們正在使用哪個分支,可以執行git branch命令

$> git branch main another_branch feature_inprogress_branch $> git checkout feature_inprogress_branch

上面的例子演示了如何使用git branch命令來查看所有可用分支,以及如何切換到一個指定的分支,在此例中,即切換到feature_inprogress_branch分支上去。

創建新分支

git checkout常與git branch協作。git branch命令可以用于創建一個新的分支。當你希望開始某個新功能的開發,可以使用git branch new_branch來創建新的分支。一旦創建完成,就可以繼續使用git checkout new_branch來切換到這個新創建好的分支。此外,git checkout命令還接受一個 -b 參數,作為創建分支并立刻切換到新分支這一系列操作的快捷方式。在創建了一堆新分支之後,則可以繼續使用git checkout命令在這些分支之間進行切換,以便并行地對多個新功能展開同步開發工作。

git checkout -b <new-branch>

以上命令同時創建并checkout到 <new-branch>上。-b選項作為一個标記告訴git先運行git branch命令然後再運行git checkout <new-branch>命令。

git checkout -b <new-branch> <existing-branch>

默認的git checkout -b命令會從當前所在的HEAD指針所指的分支來派生出新建的分支。但git checkout命令仍然可以接受一個可選的分支名作為參數。在上面的例子中,<existing-branch> 作為這個參數傳遞給git checkout命令,這一命令意味着從指定的existing-branch分支派生創建了一個名為new-branch的新分支。

切換分支

切換分支命令是一個非常直白的操作。執行下面命令會讓HEAD指針指向<branchname>分支的頂端。

git checkout <branchname>

Git會在reflog中記錄checkout操作的曆史。你可以執行git reflog命令來查看這一曆史記錄。

checkout一個遠程分支

與他人協作的情況下則一定會涉及到使用遠程倉庫。這些遠程倉庫可能是托管在一個共享節點上,也可能就是其他同事的一個本地倉庫。每個遠程倉庫都有自己的分支集合。為了能夠checkout出某一個遠程倉庫的分支,我們需要先fetch那個倉庫的内容。

git fetch --all

之後在較新版本的Git中,你就可以像checkout本地分支一樣checkout出這個遠程分支了。

git checkout <remotebranch>

對于比較老的Git版本,則需要先基于remote中的指定遠程分支創建一個新分支。

git checkout -b <remotebranch> origin/<remotebranch>

此外,你還可以checkout一個本地分支,然後将其硬重置為遠程分支的最新commit。

git checkout -b <branchname> git reset --hard origin/<branchname>

遊離狀态的HEADS

在我們已經見識到git checkout命令對于分支的三大主要操作之後,現在該到了讨論一下“遊離狀态的HEAD”的問題了。再次明确一下,HEAD是Git中用來引用當前快照的指針。在Git内部,git checkout命令隻是簡單地将HEAD指針更新為指向特定分支或者commit。當它指向一個分支時,沒什麼問題,但是當你checkout了一個特定的commit,就會将HEAD指針變成一個遊離的指針狀态。

當進入這種遊離狀态時,Git會警告你當前處于遊離狀态,你所做的任何更改也都遊離于你整個項目的開發流程。如果你執意要在遊離狀态開展新的修改,這些修改将不會被允許再合并回任何分支。然後當你沒有辦法隻能切換到其他分支時,這部分修改也無法被帶回到新的分支:

git 分支鎖定(使用分支Git)2

重點在于,開發工作應該始終發生在一個分支上——而不是一個遊離狀态的HEAD上。謹記這一原則可以保證你的變更提交永遠都能找到。當然,如果你隻是為了去看看某一個過去的提交,則無所謂是否處于遊離狀态。

總結

本文重點是關于使用git checkout命令進行分支的切換。總而言之,針對分支使用git checkout命令,會切換當前的HEAD指針指向。它還可用于創建分支,切換分支,checkout遠程分支。git checkout命令對于Git項目的操作來說是至關重要的。可以認為它與git merge命令是一體兩面。git checkout命令和git merge命令結合在一起使用才使得一系列複雜而又精妙的git 工作流程成為可能。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved