码迷,mamicode.com
首页 > 其他好文 > 详细

Git 回到过去

时间:2018-02-23 23:57:59      阅读:422      评论:0      收藏:0      [点我收藏+]

标签:记录   并且   idt   inf   com   一个   9.png   还原   ice   

技术分享图片

git add 命令:用于把工作文件放入暂存区

git commit 命令:将暂存区中等待提交的文件放入git仓库

git reset 命令:将git 仓库中的文件还原到暂存区

git checkout 命令:将暂存区中的文件还原到工作目录

 

reset 命令

使用git log 命令查看提交记录

技术分享图片

将git 仓库可视化:

技术分享图片

 

现在三棵树(工作区,暂存区,git仓库)的状态:

技术分享图片

回滚快照

快照是提交的版本每个版本称之为一个快照

现在使用reset 命令进行回滚:

执行 git reset HEAD~ 命令 #注:HEAD表示最新提交的快照(2ec01)HEAD~表示HEAD的上一个快照 HEAD~10表示最新快照的第前10个快照

技术分享图片

现在快照回滚到了第二颗树(暂存区)

技术分享图片

技术分享图片

 HEAD指向上一次快照1a86a

 

 

此时三棵树变为:

并且快照1a86a回滚到了暂存区

                                                          回滚前                                                                                                                        

技术分享图片

                回滚后

技术分享图片

 

由于现在工作目录文件要比暂存区新所以git 会提示 使用add方法将LICENSE(V2)添加到暂存区

 

--soft 选项

get retset --soft HEAD~  #只移动HEAD指向但不将快照回滚到暂存区

                                                      移动前                                                                                                              

技术分享图片

                        移动后

技术分享图片

---------------------------------------------------------------------------------------------------------

                                                    原先三棵树的状态                                                                                       

 

技术分享图片

              使用 -- soft 选项的状态

技术分享图片

不将快照回滚到暂存区,相当于撤销了上一次的提交,如果不小心提交了 执行get retset --soft HEAD~ 即可

 

--hard 选项

git reset --hard HEAD~ 不仅移动HEAD的指向,和将快照回滚到暂存区而且将暂存区的文件还原到工作目录

 

                             之前执行完 git reset HEAD~时HEAD的指向                                                                             

技术分享图片

              三棵树的状态 

技术分享图片

 

                                    执行git reset --hard HEAD~

技术分享图片

        三棵树都回滚到了第一个版本(26728)

技术分享图片

 

技术分享图片

仓库内只剩下第一个版本并且工作目录下的LICENSE文件被删除

 技术分享图片

总结

 1、移动HEAD指向(--soft)

 2、将快照回滚到暂存区(默认)

3、将暂存区还原到工作目录(--hard)

 

回滚指定快照:

git reset 00c2929

ID输入5位即可

回滚个别文件:

git reset 快照 文件名/路径

忽略HEAD 移动,直接将指定快照指定文件回滚到暂存区

“往前滚”

前提知道快照的ID号

技术分享图片

又回到了最新的版本

git reflog 记录了每一次操作

技术分享图片

第一列为 HEAD指向的版本ID号

 

Git 回到过去

标签:记录   并且   idt   inf   com   一个   9.png   还原   ice   

原文地址:https://www.cnblogs.com/PythonFCG/p/8463524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!