Git回退
【Git回退】?Git中回退有几种情况,如下:
?①对文件修改,但是修改未存入暂存区(这次修改也未提交)。
??此时只需将工作区的修改 抹掉 即可。使用git checkout 文件名。命令之后的文件内容就是 修改之前的内容。
?②(暂存区存放的是文件的修改信息)对已经存在暂存区的文件进行了修改,需要抹掉的是 暂存区修改之上的修改 。这里比较绕口。
文件 one.txt 内容是one
此时 在文件中插入一行two,并且执行了add 命令。 暂存区就是存储了此次修改的信息。
此时 又对文件插入了一行 three。此时就是相当于在修改之上就行了修改。此时git status 控制台会输出
On branch master
Changes to be committed:
(use "git reset HEAD ..." to unstage)modified:one.txt //已经存在与暂存区的修改----> 就是上述的插入的twoChanges not staged for commit: //未存入暂存区的修改
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." 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^有几个^就回退几个commitgit reset --hard HEAD~数字数字是几就回退几个commitgit 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
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长