git - 在 Bitbucket 中丢弃一个混乱的 git fork
问题描述
出于开发目的,我使用主项目的一个分支。时不时地,我拉入父回购:
git fetch parent
git merge parent/master
在这种情况下,其他人做了很多工作,所以当我这样做时,我拉入了 147 次提交,这git status
表明我远远领先于origin
(我的 fork)。我做了一些工作。我做了五次提交,但我想将最后两次压缩为一次提交。这里通常的技巧是做git rebase -i
,然后将最后一条消息编辑为squash
. 我这样做了。
当我看到列表有多么庞大时,我没有保存更改就退出了。将两个提交压缩为一个并不是那么重要,所以我放弃了这个想法。但是,git 仍然遍历提交列表,重做所有提交,这需要很长时间。
当我推送,然后在 Bitbucket 上打开一个拉取请求时,Bitbucket 尝试应用所有提交,而不仅仅是我自己完成的那些。而且由于此后进行了其他更改,这导致了我没有触及的代码中的一堆合并冲突。
有什么巧妙的方法可以解决这个问题吗?我正在考虑对我的分叉进行核对并重新分叉(我的分支都不包含任何有价值的东西),但也许我可以尝试一些破坏性较小的东西?
解决方案
你可以在你的 fork 中对单个分支进行 nuke 并将它们重置为父级的位置:
git fetch parent
git checkout master
git reset --hard parent/master
git push -f
那样的话,你仍然会有一些你想要保留的提交,并且你可以在之后通过它们所在的分支或通过 reflog 来挑选它们。
推荐阅读
- stata - 在多个命令后在表中包含其他统计信息
- extbase - 未翻译对象的 Extbase 语言问题
- c# - Xamarin.Forms NavigationBar 属性未隐藏
- html - 如何从后到前显示标签?
- image - 使用 Gcloud 命令在 GCP ML Engine 中创建作业的问题
- javascript - 传递一个空的道具(没有 api 值)来反应组件
- r - R:如果名称是由函数创建的,如何将 DataFrame 的名称传递给函数
- python - 使用城市名称而不是纬度和经度绘制图表
- swift - 如何在地图视图中的 swift 4.0 中更改引脚颜色
- azure-devops - 下载 VSTS 附件