Fe-interview: [软技能] 第86天 Git的reset和revert有什么区别?它们分别适用于什么场景?

Created on 10 Jul 2019  ·  5Comments  ·  Source: haizlin/fe-interview

第86天 Git的reset和revert有什么区别?它们分别适用于什么场景?

软技能

Most helpful comment

git reset:将某次提交后的版本全部抹除;变动如下

O ------> O ------> O                                   O ------> O
^         ^         ^            --[git reset HEAD^]--> ^         ^
版本 A    版本 B    版本 C [HEAD]                        版本 A    版本 B [HEAD]
版本 C 造成的更改直接被抹除了,无法在提交记录上看出。

通常,在与他人协作开发时,将已经提交到远端的更改 reset 回去不是一个好主意。如果执意要这么做,那么 push 时应该加上 -f 选项用本地内容强制覆写远端。

git revert:创建一次新的提交,将某次提交的更改撤销;变动如下

O ------> O ------> O                                   O ------> O ------> O -------> O
^         ^         ^            --[git revert HEAD]--> ^         ^         ^          ^
版本 A    版本 B    版本 C [HEAD]                        版本 A    版本 B    版本 C      版本 D [HEAD]
其中,版本 D 撤销了版本 C 的更改;它与版本 B 的内容是相同的。

适用场景:没有绝对的适用场景,也不存在什么最佳实践。符合你需求的就是最好的,或者你的团队用哪种你就用哪种。

All 5 comments

印象中是push和没push的区别

@dondonZh 啊?查漏补缺的时候来了

git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本
如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法

git revert的作用通过反做创建一个新的版本
如果我们想恢复之前的某一版本(该版本不是merge类型),但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。(摘自博客)

  • reset 比较强硬的回退,如果没有提交到远程仓库可以使用。
  • revert 常用于提交到远程仓库的回滚,生成一次新的提交

git reset:将某次提交后的版本全部抹除;变动如下

O ------> O ------> O                                   O ------> O
^         ^         ^            --[git reset HEAD^]--> ^         ^
版本 A    版本 B    版本 C [HEAD]                        版本 A    版本 B [HEAD]
版本 C 造成的更改直接被抹除了,无法在提交记录上看出。

通常,在与他人协作开发时,将已经提交到远端的更改 reset 回去不是一个好主意。如果执意要这么做,那么 push 时应该加上 -f 选项用本地内容强制覆写远端。

git revert:创建一次新的提交,将某次提交的更改撤销;变动如下

O ------> O ------> O                                   O ------> O ------> O -------> O
^         ^         ^            --[git revert HEAD]--> ^         ^         ^          ^
版本 A    版本 B    版本 C [HEAD]                        版本 A    版本 B    版本 C      版本 D [HEAD]
其中,版本 D 撤销了版本 C 的更改;它与版本 B 的内容是相同的。

适用场景:没有绝对的适用场景,也不存在什么最佳实践。符合你需求的就是最好的,或者你的团队用哪种你就用哪种。

Was this page helpful?
0 / 5 - 0 ratings