为了账号安全,请及时绑定邮箱和手机立即绑定

在有人推送rebase或重置到已发布的分支后,如何恢复/重新同步?

在有人推送rebase或重置到已发布的分支后,如何恢复/重新同步?

Git
哆啦的时光机 2019-07-30 10:51:55
在有人推送rebase或重置到已发布的分支后,如何恢复/重新同步?我们都听过一个人应该重订,从未发表的作品,它的危险,等等。但是,我还没有看到张贴如何处理的情况下衍合情况的任何食谱被出版。现在,请注意,只有存储库仅由已知(并且最好是很小)的人群克隆,这才真正可行,这样无论谁推送rebase或重置,都可以通知其他人他们下次需要注意的时候取(!)。如果你没有本地提交foo并且它被重新定位,我看到的一个明显的解决方案将起作用:git fetchgit checkout foogit reset --hard origin/foofoo根据远程存储库,这将简单地抛弃本地状态以支持其历史记录。但是,如果一个人在该分支机构进行了大量的本地更改,那么如何处理这种情况呢?
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

在推动变基之后恢复同步在大多数情况下并不那么复杂。

git checkout foogit branch old-foo origin/foo # BEFORE fetching!!git fetchgit rebase --onto origin/foo old-foo foogit branch -D old-foo

IE浏览器。首先,您为远程分支最初的位置设置了一个书签,然后使用它来重播从该点开始的本地提交到重新定位的远程分支。

重新定位就像暴力:如果它不能解决你的问题,你只需要更多。☺

如果查找pre-rebase origin/foo提交ID并使用它,当然可以在没有书签的情况下执行此操作。

这也是您如何处理获取之前忘记创建书签的情况。什么都不会丢失 - 你只需要检查远程分支的reflog:

git reflog show origin/foo | awk '
    PRINT_NEXT==1 { print $1; exit }
    /fetch: forced-update/ { PRINT_NEXT=1 }'

这将打印在origin/foo最近一次更改其历史记录的提取之前指向的提交ID 。

你可以简单地说

git rebase --onto origin/foo $commit foo


查看完整回答
反对 回复 2019-07-30
  • 2 回答
  • 0 关注
  • 1093 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信