Git學習筆記(六) Git檢出

2021-06-29 15:02:03 字數 1170 閱讀 6047

檢出命令

此命令會重寫工作區

該命令的實質就是修改head本身的指向,不會影響分支游標。當執行此命令時,head頭指標被更改了,由指向乙個引用(分支)變成了指向乙個提交id,分支(master)的指向沒有改變,仍舊指向原有的提交id

「分離頭指標」狀態:指的是head頭指標指向了乙個具體的提交id

用法一:git checkout [-q] [--] ...    為避免路徑和引用(或提交id)同名而發生衝突,可以在前用--作為分隔

此用法不會改變head頭指標,主要用於指定版本的檔案覆蓋工作區中對應的檔案。若省略,則會用暫存區的檔案覆蓋工作區的檔案,否則用指定提交中的檔案覆蓋暫存區和工作區中對應的檔案。

用法二:git checkout [

]此用法會改變head頭指標,之所以後面的引數寫作

,是因為只有head切換到乙個分支才可以對提交進行跟蹤,否則仍然會進入「分離頭指標」的狀態,此狀態下提交不能被引用關聯到,從而可能丟失。所以此用法最主要的作用就是切換到分支,若省略

則相當於對工作區進行狀態檢查。

用法三:git checkout [-m] [[-b | orphan] ]

此用法主要是建立和切換到新的分支,新的分支從指定的提交開始建立。新分支與master分支沒什麼實質的不同,都是在refs/heads命名空間下的引用。

$ git checkout branch

檢出branch分支,更新head以指向branch分支,以及用branch指向的樹更新暫存區和工作區。

$ git checkout 、 $ git checkout head

彙總顯示工作區、暫存區與head的差異

$ git checkout -- filename

用暫存區中filename檔案覆蓋工作區中的filename檔案,相當於取消自上次執行git add filename以來(如果執行過)的本地修改(會悄無聲息覆蓋)

$ git checkout branch -- filename

維持head的指向不變,用branch所指向的提交中的filename替換暫存區和工作區中相應的檔案,會將暫存區和工作區中的filename檔案直接覆蓋

$ git checkout -- 或 $ git checkout .

取消所有本地的修改(相對於暫存區),相當於用暫存區的所有檔案直接覆蓋本地檔案,不給使用者任何確認機會。

Git檢出(git權威指南筆記)

head 頭指標,是當前工作區的基礎版本 看到當前處於的分支 git branch v 分離頭指標 git checkout 4902dc3 處於分離頭指標狀態,可以檢查 測試和提交,而不影響任何分支。通過執行另外的乙個checkout檢出指令會丟棄在此狀態下的修改和提交 挽救分離頭提針 git b...

git本地檢出遠端分支

場景 本地分支被誤物理刪除,想要重新將自己的分支 從遠端拉取下來。此時取的是最後一次git push上去的分支 1.與遠端倉庫重新建立關係 1git clone git gitlab.名稱.git 2.聯絡後,檢視本地當前分支,為master 1git branch 3.檢出想要的遠端分支 1git...

Git檢出指定目錄或者檔案

例如檢出 遠端倉庫為 git github.com git下的readme.md檔案和dir1 目錄到本地test資料夾下 基本的流程如下 mkdir test git init git config core.sparsecheckout true cd test git info echo re...