Git回退

 Git中回退有几种情况,如下:
 ①对文件修改,但是修改未存入暂存区(这次修改也未提交)。
  此时只需将工作区的修改 抹掉 即可。使用git checkout 文件名。命令之后的文件内容就是 修改之前的内容。
 ②(暂存区存放的是文件的修改信息)对已经存在暂存区的文件进行了修改,需要抹掉的是 暂存区修改之上的修改 。这里比较绕口。

    文件 one.txt 内容是one
    此时 在文件中插入一行two,并且执行了add 命令。 暂存区就是存储了此次修改的信息。
    此时 又对文件插入了一行 three。此时就是相当于在修改之上就行了修改。
    
    此时git status 控制台会输出
        On branch master
        Changes to be committed:
         (use "git reset HEAD <file>..." to unstage)

            modified:   one.txt //已经存在与暂存区的修改  ----> 就是上述的插入的two

        Changes not staged for commit: //未存入暂存区的修改
        (use "git add <file>..." to update what will be committed)
        (use "git checkout -- <file>..." to discard changes in working directory)

            modified:   one.txt  //未存入暂存区的修改 就是上述的插入 three
    
    此时git checkout one.txt 就会将未存入暂存区的修改 抹掉(就是将 插入的three 抹掉)

 ③文件进行了修改,并且使用了add 命令 将其存入了暂存区(未提交)。
  那么取消修改就需要两步:第一,将暂存区的修改信息清除(reset)。第二,取消实际的修改(checkout)

git reset HEAD one.txt //清楚了已存入暂存区的修改
git chenkout one.txt //删除工作区中本次的修改

 ④Git可以将commit回退至指定的版本。使用的命令如下

    git reset --hard HEAD^   有几个^就回退几个commit
    
    git reset --hard HEAD~数字  数字是几就回退几个commit
    
    git reset --hard HEAD commit_id 回退至指定的commit

 ⑤git reflog可以查看操作记录

2ba4947 HEAD@{0}: reset: moving to HEAD^ // commit_id 操作数 操作名字和具体操作
9bec1ea HEAD@{1}: commit: add two
2ba4947 HEAD@{2}: commit: init
d35472d HEAD@{3}: reset: moving to d3547
e5f6212 HEAD@{4}: reset: moving to HEAD~2
d35472d HEAD@{5}: reset: moving to d3547
409954c HEAD@{6}: reset: moving to HEAD^^
aca02d6 HEAD@{7}: reset: moving to HEAD^
d35472d HEAD@{8}: commit: add a third line
aca02d6 HEAD@{9}: commit: add second line
e5f6212 HEAD@{10}: commit: add a new line
409954c HEAD@{11}: commit (initial): initial commit

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容