Git 回到过去

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号

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号