Git是如何跟踪修改的?我们之前修改文件后都用到了两个命令git add <file>
、git commit
,其实在Git中,每次修改后,如果不add
到暂存区,那就不会加入到commit
。 查看一下文件内容:
第二次提交测试
,并add
到暂存区。 我第三次测试
,查看此时文件内容,然后直接执行commit
命令。 add
到暂存区了,第二次修改后没有执行任何命令,所以并没有加入到暂存区,也就没有commit
。 这个时候,如果我们刚才第二步修改的文件内容是我们修改错的,我们想直接丢弃工作区的修改时,可以直接使用命令git checkout -- <file>
git checkout -- test.txt
复制代码
执行命令后,再次查看工作目录的当前状态,会发现工作区已经干净了,然后查看一下文件的内容,发现我们第二次的修改记录已经被丢弃了。
add
到了暂存区,这个时候我们想丢弃修改,就要分两步了,第一步使用命令git reset HEAD <file>
将暂存区的文件修改回退到工作区,接下来就和上面的情景一样了,我们就可以使用git checkout -- <file>
丢弃修改。 比如我们再次在test.txt文件中添加一行内容我第三次测试一下
,并add
到暂存区。 git reset HEAD test.txt
,将暂存区的修改内容回退到工作区。 git checkout -- <file>
git rm
用于删除一个文件,如果一个文件已经被提交到版本库,那么我们永远不用担心对文件误删。我们试着将test.txt文件删除,然后看一下工作区状态。 git add
或者git rm
删除文件,接下来我们执行以下,并查看工作区状态。 commit
到版本库了,但是如果我们删除错了呢?同样的道理,我们可以依次执行git reset HEAD test.txt
和git checkout -- test.txt
进行恢复。