git checkout 檢出命令

檢出命令(git checkout) 是git最經常使用的命令之一,同時也是個很危險的命令,由於這條命令會重寫工做區:git

  1. 用法一:git checkout [-q] [<commit>] [--] <paths>...
  2. 用法二:git checkout [<branch>]
  3. 用法三:git checkout [-m] [[-b|--orphan] <new_branch>] [<start_point>]
  • 上面列出的第一種用法和第二種用法的區別在於,第一種用法在命令中包含路徑<paths>.爲了不路徑和引用(或者提交id)同名而發生衝突,能夠在<paths>前面用兩個連續的短線(減號做爲分割)
  • 第一種用法的<commit>是可選項,若是省略則至關於從暫存區進行檢出(檢出的默認值是暫存區)。
  • 第一種用法(包含了路徑<paths>的用法)不會改變HEAD頭指針,主要是用於指定版本的文件覆蓋工做區中對應的文件。若是省略<commit>,則會用暫存區的文件覆蓋工做區的文件,不然用指定提交中的文件覆蓋暫存區和工做區中對應的文件.
  • 第二種用法則會改變HEAD頭指針,主要用做切換到分支,若是省略<branch>則至關於對工做區進行狀態檢查。
  • 第三種用法主要是建立和切換到新的分支(<new_branch>),新的分支從<start_point>指定的提交開始建立。新的分支和master分支沒有什麼實質的不一樣,都是在refs/heads命名空間下的引用。

 具體示例:spa

  • git checkout branch  檢出branch分支,要完成上圖的三個步驟,更新HEAD以指向branch分支,以及用branch指向的樹更新暫存區和工做區
  • git checkout  彙總顯示工做區,暫存區與HEAD的差別
  • git checkout HEAD 同上
  • git checkout -- filename 用暫存區中filename文件來覆蓋工做區中的filename文件。至關於git add filename的撤消,這個命令很危險,由於對於本地的修改會悄無聲息的覆蓋
  • git checkout -- .  或寫做 git checkout .   注意命令後面有個點(.)  這條命令最危險,會取消全部本地的修改(相對於暫存區),至關於用暫存區的全部文件直接覆蓋本地文件,不給用戶任何確認的機會!
  • git checkout HEAD . 或者 git checkout HEAD <file> , 注意命令後面有個點(.) ,會用HEAD指向的master分支中的所有或部分文件替換暫存區和工做區的文件,這個操做也很危險
相關文章
相關標籤/搜索