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号

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