git checkout 切换分支或恢复工作树文件
1. git checkout 是什么?
git-checkout - 切换分支或恢复工作树文件
2. git checkout 用法与实践
2.1 切换分支 git checkout [<分支>]
git checkout [<分支>]
当 [<分支>]如果存在时, 将切换到该 [<分支>]
当 [<分支>]如果不存在时, git 将报出未匹配到该 [<分支>]
案例:
2.1.1 git branch --all
查看本地和远程分支
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
2.1.2 git checkout master
(master分支存在)
说明:将切换到本地的master分支上
2.1.3 git checkout test
(test分支不存在)
说明:test分支不存在时,将会提示未匹配到该branch
2.2 checkout新建分支
git checkout -b|-B <新分支>
指定-b会创建一个新分支,就像 调用git-branch[1]然后创建一样
如果-B给出,new-branch则在不存在时创建;否则,它被重置。
案例
2.2.1 git branch --all
查看本地和远程分支
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
2.2.2 git checkout -b test
说明:指定-b时,git将会创建test分支并且切换到该分支.(如果存在时,git将会报错已经存在该分支)
2.2.3 git checkout -B test1
说明:分支,如果不存在时创建并且切换到该分支;否则,它被重置并且切换到该分支
2.3 checkout清除文件修改
checkout对于文件的修改和清除本质是:
用暂存区|索引(index)中的内容覆盖工作树(未git add的)
2.3.1 git checkout .
清除工作树修改的内容
说明:将工作树中的修改文件全部清除,但保留暂存区的信息(如果暂存区没有,那么该命令等于清除工作树所有内容)
案例和2.3.2大致一样请看下方案例
2.3.2 git checkout -- file|path
清除工作树修改的某个文件|路径
说明:清除工作树中修改的file或path的内容
案例:
当如果在工作区改了信息,但是没有git add 加入到暂存(index)中时案例.
1.修改readme.md文件,加入"checkout说明"
2.输入git checkout readme.md
说明:当执行上面步骤时,步骤1的信息将被清除
3. 当步骤1执行后,再执行git add .
保存到暂存区后,执行步骤2时
步骤3说明:此时信息已经保存到暂存区,git checkout readme.md
将还是保留暂存区(index)信息,等于 “不变化”
2.3.3 git checkout -f
忽略工作树和暂存(index)中修改的信息
说明:途中有未跟踪的文件,也要继续。这用于丢弃本地更改和任何未跟踪的文件或目录
案例
1.修改readme.md文件,加入"checkout说明"
2.输入git checkout -f