由于提交的代码会处于不同的位置:工作区,暂存区,只在本地提交commit 和 已推送到远程的 commit。 本文对处于不同位置的回滚,进行了区分和采取对应的回滚方法。
清空工作区
1 | # delete tracked files |
只在本地提交
1 | #用于还没push到远程,可以清除commit记录 |
只回退head: 会导致原本干净的工作区多了Modify... 如果commit 这些modify 相当于head又前进到之前版本 同时回退工作区的意思就是清空这些Modify...
已推送到远程
使用 revert,它会带来新的 commit 记录。
revert 与 reset 不同的地方除了用于回滚处于不同的位置的commit。
reset 命令的结果是回滚 revision 之后提交。而 revert 命令的结果是 revision 对应的 commit 和 revision 之后的 commits 都会被回滚.
1 | git revert <revision> |
在 sourcetree
软件上使用如下
git push –force 也可以回滚,但它并不安全,可能会把别人 commit 也回滚掉,一般不建议使用
参考
stackoverflow.com/how-to-remove-local-untracked-files-from-the-current-git-working-tree