在有人推送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
- 2 回答
- 0 关注
- 1093 浏览
添加回答
举报
0/150
提交
取消