Git杂谈——git revert

414 阅读2分钟

最近在重新把git捡起来学习一下,决定写一些文章记录一下,一来可以加深自己的印象,二来也可以和大家一起分享一下学习到的小知识。最近发现一个很好的学习git的地方不过是全英的,只能边查边看。传送门放在下面,得好好学习英语了~

Git Tutorials and Training | Atlassian Git Tutorial​www.atlassian.com/git/tutorials​www.atlassian.com/git/tutorials

git revert —— 回退小助手

revert 翻译为中文就是还原,复原的意思,对应在 git 操作中就是用于还原仓库状态的,具体怎么还原的呢,git revert 接受一个 ref 引用,我们可以传入一个commit、tag、分支或是HEAD都可,git revert会识别这个ref对应的变更,并且会提交一个新的commit来抵消这个commit产生的变更。

注意这里不是说把传入ref之后的所有变更都撤回,也不是说还原到ref对应的仓库状态,而是产生一个新的提交用于抵消掉传入ref产生的变更,这里在语义上有些容易误解。总之,我们要理解 —— git revert 的撤销操作并不会删除任何的提交。这样做有什么好处呢?

首先 git revert 可以保留完整的 git 历史,对多人合作的分支来说比较友好。

其次 git revert 相对于 git reset 这样的命令来说更加灵活,他可以指定所在分支的任意一个commit进行revert,不会改变该commit后面的变更。但是 git reset 就不一样,他会改变该commit后所有的变更,如果我们想用 git reset 来撤销某次commit,我们必须得把那次commit后所有的commit移除,然后撤销变更,随后再将之前移除的commit重新提交,这显然不是一个好的回退某个commit的方法。

git revert 选项

-e / --edit

这是默认的选项,你不需要单独配置他,有了这个配置,在执行 git revert 后,会弹出默认编辑器来让你对该次变更的信息就行修改。

--no-edit

与 -e / --edit 相反,传入这个选项那么就不会弹出默认编辑器来让你修改变更信息。

-n / --no-commit

传入这个选项意味着 git revert 执行后并不会自动产生commit,而是把改动的代码加到工作区和暂存区,用户可以自行修改并提交commit。

以上就是git clean相关的知识点啦~