git 版本回退总结

git 版本回退总结
(本节内容参考了廖雪峰的网站)

工作区有一个隐藏目录 .git ,这个不是工作区,而是Git的版本库。

Git 的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫 index )的暂存区,还有 Git 为我们自动创建的第一个分支 master ,以及指向 master的一个指针叫 HEAD 。

HEAD指向的版本就是当前版本,因此,Git 允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别。现在,你又理解了Git是如何跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中。


git checkout – file 可以丢弃工作区的修改:

$ git checkout -- readme.txt

命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态。


小结

又到了小结时间。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

你可能感兴趣的:(git)