[TOC] ### 1. 前言 ---- git checkout 命令用于創(chuàng)建、切換分支或恢復工作樹文件。 最常用的兩種用法 ``` # 切換分支 git checkout <branch> # 創(chuàng)建并切換到新分支 git checkout -b <branch> ``` ### 2. 創(chuàng)建分支 ---- 當我們需要以當前分支為起點創(chuàng)建一個新的分支時,主要會用到以下兩個命令 ``` # 創(chuàng)建分支 git branch <branch> # 切換到新分支 git checkout <branch> ``` `-b` 創(chuàng)建并切換到新分支 (上面兩個命令的合集) ``` git checkout -b <branch> ``` `-B` 重置分支(刪除已存在的分支且重新創(chuàng)建,分支不存在也不會報錯) ``` git checkout -B <branch> ``` 基于遠程庫分支創(chuàng)建分支 ``` # 語法格式 git checkout -b <new-branch> origin/<old-branch> # 使用示例: 以遠程庫中的 liang 分支為起點,在本地創(chuàng)建一個 dev 分支 git checkout -b dev origin/liang ``` 基于指定標簽創(chuàng)建分支 ``` # 切換到標簽對應的提交記錄 git checkout <tagname> # 創(chuàng)建并切換到新分支 git checkout -b <branch> ``` 基于指定 commit id 創(chuàng)建分支 ``` # 切換到指定提交記錄 git checkout <commit id> # 創(chuàng)建并切換到新分支 git checkout -b <branch> ``` ### 3. 切換分支 ---- 使用 checkout 切換分支時,先從本地庫查找分支,在本地庫沒找到時,就去遠程庫中查找,在遠程庫也沒有找到就會報錯 ``` # 切換分支 git checkout <branch> # 查找順序 本地分支 --> 遠程分支 --> 提示分支不存在 ``` ![](https://img.itqaq.com/art/content/a96913ae8d89dd5547032d404bf66ffb.png) **切換分支后的提示信息** 當我們切換到 master 分支后,出現(xiàn)這個提示說明: 本地分支和上游分支的最新提交記錄是同一個 ``` # 您的分支 “origin/master” 是最新的 Your branch is up to date with 'origin/master'. ``` 將一個遠程倉庫中的分支 liang 簽出到本地時的提示 ``` # 本地庫中的分支 liang 的上游分支是遠程倉庫中的分支 liang Branch 'liang' set up to track remote branch 'liang' from 'origin'. # 切換到了一個新的分支 liang Switched to a new branch 'liang' ``` 當本地庫有了新的提交記錄 ``` # 本地分支比遠程分支多了一次提交記錄 # 可以使用 git push 將本地的提交記錄推送到遠程庫 Your branch is ahead of 'origin/liang' by 1 commit. (use "git push" to publish your local commits) ``` `-q, --quiet` 不顯示任何提示信息,如下圖所示 ``` git checkout -q liang ``` ![](https://img.itqaq.com/art/content/673510ef03178db10ed1f7512274ddc4.png) ### 4. 撤銷更改 ---- 用于讓工作區(qū)中的文件回到最近一次 `git add` 或 `git commit` 的狀態(tài) ``` # 工作區(qū)所有文件撤銷更改 git checkout -- . # 工作區(qū)某些文件撤銷更改 git checkout -- <file1> <file2> ``` 場景一、本地庫中已有 user.txt,在工作區(qū)修改了該文件,但是沒有提交到暫存區(qū),此時撤銷更改是從版本庫中恢復內容 ![](https://img.itqaq.com/art/content/926635789a0152a55893627e9c55432a.png) 場景二、本地庫中已有 user.txt,在工作區(qū)修改了該文件,并且已提交到暫存區(qū),此時撤銷更改是從暫存區(qū)中恢復內容 ![](https://img.itqaq.com/art/content/4851a5d34b5ae81956480d0abe0c7e74.png)