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

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

我们都听过一个人应该重订,从未发表的作品,它的危险,等等。但是,我还没有看到张贴如何处理的情况下衍合情况的任何食谱被出版。


现在,请注意,只有存储库仅由已知(并且最好是很小)的人群克隆,这才真正可行,这样无论谁推送rebase或重置,都可以通知其他人他们下次需要注意的时候取(!)。


如果你没有本地提交foo并且它被重新定位,我看到的一个明显的解决方案将起作用:


git fetch

git checkout foo

git reset --hard origin/foo

foo根据远程存储库,这将简单地抛弃本地状态以支持其历史记录。


但是,如果一个人在该分支机构进行了大量的本地更改,那么如何处理这种情况呢?


哆啦的时光机
浏览 1094回答 2
2回答

慕桂英4014372

在推动变基之后恢复同步在大多数情况下并不那么复杂。git checkout foogit branch old-foo origin/foo # BEFORE fetching!!git fetchgit rebase --onto origin/foo old-foo foogit branch -D old-fooIE浏览器。首先,您为远程分支最初的位置设置了一个书签,然后使用它来重播从该点开始的本地提交到重新定位的远程分支。重新定位就像暴力:如果它不能解决你的问题,你只需要更多。☺如果查找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
打开App,查看更多内容
随时随地看视频慕课网APP