Git revert及其他一些回退操作
放弃本地的代码和本地提交,希望会退到远程分支的某次提交时,使用git reset --hard fa042ce。
本地已提交,但是发现有问题,想要撤销本地的提交,使用git checkout /trs/test.java。
想要恢复本地提交和远程库最新版本一致,但又保留本地的代码,使用git reset origin/master。
git revert创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。
git revert是新建一个commit,之前的commit会保留,在gerrit想回退至某个版本时很有用。
git log 命令可以显示所有提交过的版本信息,git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)。
例如执行 git reset --hard HEAD~1,退回到上一个版本,用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid,我们就可以买后悔药,恢复到被删除的那个版本。
本地没有add的文件丢失后,可以尝试IDEA等工具的Local History,有历史记录的话可以被恢复。
reset之前如果执行过git add 操作的话,执行 git fsck --lost-found,然后到.git/lost-found目录下找找看有没有你丢失的文件。