首页 > 编程知识 正文

git删除本地commit,git命令回滚

时间:2023-05-06 20:03:02 阅读:17363 作者:1852

前期准备

git log确认要回滚的版本的commit编号

开始

回滚的奥秘是使用git reset

可以从git文档中看到

git reset [-- soft|- -混合[-n ]|--hard|--merge|--keep ] [-q ] ]

使用时,也可以使用

git reset-- soft8ff 24 a 6803173208 F3 e 606 e 32 dfcf 82 db9a c84 d 8

git reset --hard XXX

git reset [DESCRIPTION-option] []

我只使用过soft和hard,所以我要记录这两个(

soft (软)众所周知,git只会将头标头指向指定的commit编号,而不会更改索引文件或工作树的内容。 此命令将所有更改文件保留为“Changes to be committed”(变更为建议)

白字:您在项目中的更改将被保留

重置hard (强硬)、索引和工作树。 因为你在项目上没有所有的改动,所以谨慎使用hard选项……不然,你无知震惊的“卧床不起,我的代码怎么不见了? ”

混合将重置索引,但不重置工作树。 进行更改时,将保留未跟踪的文件(在工作树中)。 git的默认选项

如果你认为这三个不满足你的需要,那就去看git文档吧。 我真的不擅长翻译.

-合并

resetstheindexandupdatesthefilesintheworkingtreethataredifferentbetweenand ` head `,butkeepsthosewhicharedifferentbetwentheethed . ifafilethatisdifferentbetweenandtheindexhasunstagedchanges,reset is aborted。

inotherwords---- mergedoessomethinglikeagitread-tree-u-m,butcarriesforwardunmergedindexentries。

--keep

resetsindexentriesandupdatesfilesintheworkingtreethataredifferentbetweenand ` head `.ifafilethatisdupdatesfetweenandhas

背景

今天为什么要写这个? 因为项目使用了git submodule,所以在真正的漏洞里,第一次得到的人,真的会遮住脸。

其他同事在product上推送时,覆盖了前面的人的commit内容。 这个坑爹的原因还没找到。

本来,推送时,一定会进行git pull。 当pull集成到本地dev中时,它一定会更新或冲突。 但是,TNND真的很不可思议,拿着上面提到的commit上了推送。 这个特别的饼干是什么? 如果问题的旧版本package.json包名错了,项目就起不来了,这个锅又到了我头上。 大人,我不当啊……

目前的解决方案有两种。

回滚到上一个正确的位置。 让commit再次提交错误的内容

继续这个坏的。 我老家再修好一次,再推一次

made,一个人也不想选……

系统开销

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。