前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一次 Git 回滚的故事

一次 Git 回滚的故事

作者头像
二哥聊运营工具
发布2021-12-17 08:29:19
4730
发布2021-12-17 08:29:19
举报
文章被收录于专栏:程序员泥瓦匠

“房子是租的 但生活不是”

一、故事的开始

远程master分支下代码被不小心提交了很多垃圾代码或项目删掉,想要回滚到以前的某一版本并删除commit log。怎么办?情景如图:

情景很简单。老板上传了个文件,我把它删掉了。有一种办法,把文件再push下,但是也不想他看到图中那comment(ps:这样我才不会被 fire)。实现上面场景的代码如下:

vim A.txt git add . git commit -a -m "add A.txt" git push rm A.txt git commit -a "我删除了老板的东西"

二、怎么办呢?怎么办呢?解决之道

看看 GIT 工作原理,分工作区、暂存区、本地版本库和远程版本库

① 工作区:就是我们操作的目录

② 暂存区:操作目录的快照

③ 本地版本库:Git的精髓,人人都是中央仓库。也就是Git分布式的好处,自然对比SVN这种集中式

④ 远程版本库:Github这种中央仓库,可以达到共享。

常用的操作也如图所示,不言而喻了。

解决的代码如下:

git log git reset --soft ${commit-id} git stash git push -f

详解如下:

第1行:git log 查看提交历史,然后找到要回滚的版本。历史如下,

commit 84686b426c3a8a3d569ae56b6788278c10b27e5b Author: JeffLi1993 <qiangqiangli1993@gmail.com> Date: Fri Apr 8 19:11:32 2016 +0800 我删除了老板的东西 commit 72bd6304c3c6e1cb7034114db1dd1b8376a6283a Author: JeffLi1993 <qiangqiangli1993@gmail.com> Date: Fri Apr 8 19:05:23 2016 +0800 add A.txt

我们想要回滚到的版本就是:72bd6304c3c6e1cb7034114db1dd1b8376a6283a

第2行,输入对应版本即可:

git reset --soft 72bd6304c3c6e1cb7034114db1dd1b8376a6283a

撤销到某个版本之前,之前的修改退回到暂存区(不懂看漂亮的图:)。

soft 和 hard 参数的区别就是,hard 修改记录都没了,soft 则会保留修改记录。

第3行:暂存为了安全起见。

第4行,覆盖 -f,对

git push -f

将本地master push 到远程版本库中, -f 强制覆盖。

小结

1. git reset 回滚到某个版本之前 2. git push -f 强制push覆盖

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈。你也可以分享到朋友圈哦,让更多的人阅读这篇文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员泥瓦匠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档