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 切换分支的功能

最后更新于

这有帮助吗?