git checkout
的使用可以很复杂(具体用法,请打开以上参考资料), 但日常生产中常用的有:-
- 回退文件;(从暂存区、从本地仓库)
-
- 切换分支(包括新建、切换);
-
-
git checkout -- a.txt
- 暂存区 中的 a.txt文件 覆盖 工作区间的 a.txt,使用时注意路径;
-
git checkout -- .
- 将暂存区中的所有文件,覆盖工作区间,当前的所有修改均会被覆盖;
-
git checkout head a.txt
- 将 本地仓库 中的a.txt文件覆盖 工作区间的 a.txt,使用时注意路径;
-
git checkout head .
- 将 本地仓库 所有代码覆盖工作区间,当前的所有修改均会被覆盖,谨慎使用;
-
git checkout dev
- 切换到一个叫 “dev” 的分支;
- 如果本地没有"dev"分支而远程有(remotes/origin/dev),则自动在本地创建"dev"分支且关联远程同名分支;相当于
git checkout remotes/origin/dev
+git branch -b dev
+git branch --set-upstream-to=origin/dev dev
-
git checkout -b dev
- 基于当前分支创建一个叫“dev”的分支,然后切换过去;如果创建的分支名已存在会报错, 如参数换成
-B
则不会报错, 因为会将原同名分支覆盖掉(谨慎使用);
- 基于当前分支创建一个叫“dev”的分支,然后切换过去;如果创建的分支名已存在会报错, 如参数换成
-
git checkout remotes/origin/master
- 将当前分支切换到远程分支;
-
git checkout -b newBranch origin/newBranch
- 基于远程
newBranch
分支创建一名为newBranch
的分支,并切换过去且关联远程同名分支;相当于git checkout remotes/origin/newBranch
+git branch -b newBranch
+git branch --set-upstream-to=origin/newBranch newBranch
- 如果git 1.6.2 以上版本,该指令能简化为
git checkout --track origin/newBranch
- 基于远程
-
git checkout --orphan dev
- 基于当前分支创建一个叫“dev”的分支,然后切换过去;假如你的某个分支上,积累了无数次的提交,你也懒得去打理,打印出的log也让你无力吐槽,那么这个命令将是你的神器,它会基于当前所在分支新建一个赤裸裸的分支,没有任何的提交历史,但是当前分支的内容一一俱全。
-
git checkout 0d1d7fc32
- 0d1d7fc32为commitId, 代码处于 detached 状态, 提交commit 会新生成一个分支(临时分支);
-
git checkout -b old-branch-name 0d1d7fc32
- 相当于
git branch old-branch-name 0d1d7fc32
+git checkout old-branch-name
基于当时的commit恢复分支;(old-branch-name已被删除,且0d1d7fc32为old-branch-name分支上的提交)
- 相当于
- git reset 代码撤销(回退): 配合
git log
,我的回退实用性可以完爆git checkout
;