git rebase --skip文件丢失找回

今天写了一堆代码,git add .后推送到远程,发现远程有更新,需要git pull,此时git pull --rebase后发现有冲突

image

此时脑袋短路加抽风!!! 执行了git rebase --skip,之前的代码一下子全没有了,心里发慌,后背发凉,又要重写一遍了!!!

图片.png

google之后发现可以执行git reflog命令

git rebase 误操作导致文件丢失撤销并恢复文件
第一步
执行 git reflog查看本地操作记录
找到本次rebase之前的操作id 例如:01b6bb4
第二步 执行恢复命令
git reset --hard 01b6bb4
出现提示则输入y确认

image
图片.png

找回代码后,果断的git push --force了


图片.png

git rebase使用场景一:合并多次提交记录

1.实际操作提交了三个commit之后,合并最近的两次提交为一个commit,那么我们输入如下命令git rebase -i 两个要合并的commitId的前一个commitId

image

执行git rebase -i HEAD~2后,可以看到其中分为两个部分,上方未注释的部分是填写要执行的指令,而下方注释的部分则是指令的提示说明。指令部分中由前方的命令名称、commit hash 和 commit message 组成。
当前我们只要知道 pick 和 squash 这两个命令即可。
pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit


image

将out_yuv420p.yuv这次提交合并到in.png上,我们将 e2eb289 这个 commit 前方的命令改成 squash 或 s,然后输入:wq以保存并退出


图片.png

这是我们会看到 commit message 的编辑界面
其中, 非注释部分就是两次的 commit message, 你要做的就是将这两个修改成新的 commit message。
image

输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。
image

image

注意事项:如果这个过程中有操作错误,可以使用 git rebase --abort来撤销修改,回到没有开始操作合并之前的状态。

以上是合并最近两次提交信息,若合并多次呢,比如三次,五次呢


image

执行git rebase -i HEAD~5


image

合并五次提交信息为一次提交信息,git log发现前面五次提交信息已经变化为一次提交信息
image

图片.png

git push --force将合并后的提交信息推送到远程
若遇到报错git LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
则将代理关掉,重新换个节点

git rebase使用场景二:分支合并

详情参考文章《彻底搞懂Git-Rebase》

假设你和同事分别从master上面拉了两个分支,feature-1.0.0和feature-2.0.0,同事的分支feature-1.0.0提交了三次代码后,合并到了master分支,此时master已经领先于你的feature-2.0.0分支了,我们想要同步master分支的改动
首先想到的是执行git merge master,此时
就会在记录里发现一些 merge 的信息,但是我们觉得这样污染了 commit 记录,想要保持一份干净的 commit,怎么办呢?这时候,git rebase 就派上用场了。
在feature-2.0.0分支上执行:git rebase master
这里补充一点:rebase 做了什么操作呢?
首先,git 会把 feature-2.0.0 分支里面的每个 commit 取消掉;
其次,把上面的操作临时保存成 patch 文件,存在 .git/rebase 目录下;
然后,把 feature-2.0.0 分支更新到最新的 master 分支;
最后,把上面保存的 patch 文件应用到 feature-2.0.0 分支上;


图片.png

image

从 commit 记录我们可以看出来,feature-2.0.0 分支是基于 feature-1.0.0 合并后的 master ,自然而然的成为了最领先的分支,而且没有 merge 的 commit 记录,是不是感觉很舒服了。
以上是本地分支并没有提交到远程的例子,我们再试一个提交到远程的例子
feature-1.0.0是同事的分支,我们先合并到master,推送到远程

image

自己的分支feature-2.0.0执行git rebase master


image
image

在 rebase 的过程中,也许会出现冲突 conflict。在这种情况,git 会停止 rebase 并会让你去解决冲突。在解决完冲突后,用 git add 命令去更新这些内容。

git rebase --continue

这样 git 会继续应用余下的 patch 补丁文件。

在任何时候,我们都可以用 --abort 参数来终止 rebase 的行动,并且分支会回到 rebase 开始前的状态。

git rebase —abort

根据上文来看,git-rebase 很完美,解决了我们的两个问题:
1.合并 commit 记录,保持分支整洁;
2.相比 merge 来说会减少分支合并的记录;
如果你提交了代码到远程,提交前是这样的:


图片.png

提交后远程分支变成了这样:


image

而此时你的同事也在 feature1 上开发,他的分支依然还是:
图片.png

那么当他 pull 远程 master 的时候,就会有丢失提交纪录。这就是为什么我们经常听到有人说 git rebase 是一个危险命令,因为它改变了历史,我们应该谨慎使用。

feature-2.0.0执行git rebase master后将分支feature-1.0.0上面合并到
master的代码拉取到feature-2.0.0分支提交记录的前面


图片.png

此时同事在feature-2.0.0分支上有提交记录,执行git pull操作后,拉取不到in_32.png这一条提交记录


image

in_32.png这条提交记录就丢失了
image

除非你可以肯定该 feature-1.0.0 分支只有你自己使用,否则请谨慎操作。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容