git checkout
这节课我们来聊一下git checkout命令,这个命令有两种功能:还原文件内容和切换分支
还原文件内容
使用git checkout还原文件分为了两种情况,我们通过下边的例子来依次讲解
例如我们在午休时不小心压到了键盘,在index.html文件中输入了很多无用的行,你可以手动一行行的删掉,但是比较繁琐,这时候你就可以用git checkout 命令
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Git-师否</title>
</head>
<body>
gggg(⊙o⊙)…4ffdtgfgc
gggg
gggg
<div>我是新增的一行</div>
hhdggfgfte5454gtyrt搞错了
fggggerrg55gtggg44455g
ggggd
r5
5tgggh
h
ggg
hh
</body>
</html>
1:修改的文件内容还没添加到暂存区
index.html文件的修改还未放到暂存区,这个时候执行git status命令查看文件状态
$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: index.html
修改尚未加入提交(使用 "git add" 和/或 "git commit -a"
其实每次执行git status的时候git都会给我们推荐下一步的操作命令,由于我们是要丢弃这些无用修改,就执行git checkout命令
$ git checkout -- index.html
执行checkout 命令之后,我们在用git status命令查看下,无用的修改已经被丢弃了,文件回到这最初的状态
$ git status
位于分支 master
无文件要提交,干净的工作区
$ cat index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Git-师否</title>
</head>
<body>
<div>我是新增的一行</div>
</body>
</html>
2:修改的文件已经添加到暂存区
如果index.html文件修改的内容已经被添加到了暂存区中,我们再像第一步那样直接执行git checkout,只会把工作区中该文件的修改撤销,但暂存区的修改还是存在的,我们需要先用git reset命令把暂存区的文件内容放回工作区中
$ git reset HEAD index.html
重置后取消暂存的变更:
M index.html
文件改变放回工作区之后就变成了第一种情况了,我们再执行git checkout 把文件内容还原
git checkout -- index.html
git checkout后边跟 -- 文件名
,表示撤销某个文件的修改。checkout后边跟 .
表示撤销当前文件夹的所有修改
切换分支
我们将会在2.2.2的分支管理中介绍git checkout 切换分支的功能
最后更新于
这有帮助吗?