Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
haizhilin2013 opened this issue Jul 10, 2019 · 6 comments
Labels
软技能 软技能

Comments

@haizhilin2013
Copy link
Collaborator

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

@haizhilin2013 haizhilin2013 added the 软技能 软技能 label Jul 10, 2019
@dondonZh
Copy link

印象中是push和没push的区别

@haizhilin2013
Copy link
Collaborator Author

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

@dondonZh
Copy link

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

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

@pokerLife
Copy link

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

@ghost
Copy link

ghost commented Jul 11, 2019

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
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
软技能 软技能
Projects
None yet
Development

No branches or pull requests

4 participants