有些情况是没法用git 来回退的:
新建了文件,新建了文件并编辑,新增了文件并删除 总之是没有用git add file 命令把文件存到暂存区中.上面的文件只是普通的存放在了硬盘上,所有的改动都没有记录.
git add 后的文件另外存了一份(存的其实是不同的部分) 到暂存区 所以这是可以回退版本的基本条件.
git add 到暂存区之后的文件又被在工作区编辑了,如果要回退到编辑之前的样子,或称丢弃这次工作区的编辑: git checkout -- file
如果是git add 到了暂存区,但是又不想提交了,这个时候可以 分两步:git reset HEAD file 先把暂存区的改变回退到上一个版本 然后 git checkout -- file
如果是已经commit 但还没有push 到远程库,可以 git log --pretty=oneline 查看提交的版本号,然后根据 git reset commit_id 来回退.
记住以后git fetch 之后 最好有个习惯,那就是用git log git diff git status 看看,然后再决定是否merge.
如果已经提交了,那只能是先备份后提交,用push 的方式来进行删除.或者找到提交历史,仔细的找到关联的文件,清楚后再进行整体回退.