Git Checkout
最后更新
git checkout 是在仓库中来回切换的经典命令:切换分支、用 -b 创建分支、检出某个特定提交,或者恢复文件。它的功能太多,所以新版 Git 把它的工作拆分成了 git switch(分支)和 git restore(文件)。两种写法现在都能用。
在终端在线编辑器中试试这些命令:浏览器里就有一个真正的 shell,无需安装任何东西。
语法
| 命令 | 作用 |
|---|---|
git checkout main | 切换到已有的分支 |
git checkout -b feature | 创建新分支并切换过去 |
git checkout <hash> | 检出某个特定提交(分离 HEAD) |
git checkout -- file.txt | 丢弃对文件的修改(恢复文件) |
git checkout main -- file.txt | 从另一个分支恢复一个文件 |
checkout vs switch vs restore
| 任务 | 旧写法(checkout) | 新写法 |
|---|---|---|
| 切换分支 | git checkout main | git switch main |
| 创建并切换 | git checkout -b x | git switch -c x |
| 丢弃文件修改 | git checkout -- f | git restore f |
Git checkout 常见问题
git checkout 是做什么的?
它让你在仓库中来回切换。最常见的用法是切换分支(
git checkout main),但它也可以创建分支(-b)、检出某个特定提交,或者把文件恢复到之前的版本。正因为它承担了好几种不同的工作,新版 Git 引入了 git switch 和 git restore 来分担。git checkout 和 git switch 有什么区别?
git switch 是一个更新、更专一的命令,只用来切换分支(加上 -c 时还能创建分支),更清晰,也更不容易用错。git checkout 除此之外还能恢复文件和检出提交。对于分支操作,git switch main 和 git checkout main 是等效的;用你团队习惯的那个就行。如何检出某个特定提交?
运行
git checkout <hash>。这会让你进入“分离 HEAD”(detached HEAD)状态:你在查看那个提交,但不在任何分支上。如果想保留在这里做的工作,就创建一个分支:git switch -c newbranch。要回去的话,用 git switch main 重新检出一个分支。如何用 checkout 丢弃对文件的修改?
运行
git checkout -- file.txt,丢掉这个文件中未提交的修改,恢复到最后一次提交的版本。在新版 Git 中,更清晰的等效写法是 git restore file.txt。两者都会丢弃你的修改,所以请确认你不再需要它们。可以在线练习吗?
可以。打开终端在线编辑器,就能在浏览器里真正的 shell 中运行
git checkout,无需安装任何东西。Coddy 免费的互动式 Git 课程也会一步步讲解如何创建和切换分支。