Skip to content

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

Open
@haizhilin2013

Description

@haizhilin2013
Collaborator

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

Activity

dondonZh

dondonZh commented on Jul 11, 2019

@dondonZh

印象中是push和没push的区别

haizhilin2013

haizhilin2013 commented on Jul 11, 2019

@haizhilin2013
CollaboratorAuthor

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

dondonZh

dondonZh commented on Jul 11, 2019

@dondonZh

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

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

pokerLife

pokerLife commented on Jul 11, 2019

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

ghost commented on Jul 11, 2019

@ghost

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 的内容是相同的。

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

smile-2008

smile-2008 commented on Feb 26, 2021

@smile-2008
  • reset 比较强硬的回退,如果没有提交到远程仓库可以使用。
  • revert 常用于提交到远程仓库的回滚,生成一次新的提交
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @smile-2008@haizhilin2013@dondonZh@pokerLife

        Issue actions

          [软技能] 第86天 Git的reset和revert有什么区别?它们分别适用于什么场景? · Issue #599 · haizlin/fe-interview