在 Bitbucket 中丢弃一个混乱的 git 分支
Discard a messed up git fork in Bitbucket
出于开发目的,我使用主项目的一个分支。我时不时地拉入父仓库:
git fetch parent
git merge parent/master
这一次,别人做了很多工作,所以当我这样做时,我提交了 147 次提交,所以 git status
表明我远远领先于 origin
(我的叉子)。我做了一些工作。我已经进行了五次提交,但我想将最后两次压缩为一次提交。这里常用的技巧是 git rebase -i
,然后将最后一条消息编辑为 squash
。我做到了。
当我看到列表有多大时,我没有保存更改就退出了。将两个提交合并为一个并不是那么重要,所以我放弃了这个想法。但是,git 仍然 运行 遍历提交列表,重做所有这些,这花了很长时间。
当我推送并在 Bitbucket 上打开拉取请求时,Bitbucket 尝试应用 所有 提交,而不仅仅是我自己完成的提交。由于此后进行了其他更改,这导致了我未触及的代码中的一堆合并冲突。
有什么好的方法可以解决这个问题吗?我正在考虑对我的叉子进行核攻击并重新叉子(none 我的 b运行 包含任何有价值的东西),但也许我可以尝试一些破坏性较小的东西?
你可以在你的 fork 中对单个分支进行 nuke 并将它们重置到父级所在的位置:
git fetch parent
git checkout master
git reset --hard parent/master
git push -f
这样一来,您仍将拥有少量要保留的提交,之后您将能够通过它们所在的分支或通过 reflog 来挑选它们。
出于开发目的,我使用主项目的一个分支。我时不时地拉入父仓库:
git fetch parent
git merge parent/master
这一次,别人做了很多工作,所以当我这样做时,我提交了 147 次提交,所以 git status
表明我远远领先于 origin
(我的叉子)。我做了一些工作。我已经进行了五次提交,但我想将最后两次压缩为一次提交。这里常用的技巧是 git rebase -i
,然后将最后一条消息编辑为 squash
。我做到了。
当我看到列表有多大时,我没有保存更改就退出了。将两个提交合并为一个并不是那么重要,所以我放弃了这个想法。但是,git 仍然 运行 遍历提交列表,重做所有这些,这花了很长时间。
当我推送并在 Bitbucket 上打开拉取请求时,Bitbucket 尝试应用 所有 提交,而不仅仅是我自己完成的提交。由于此后进行了其他更改,这导致了我未触及的代码中的一堆合并冲突。
有什么好的方法可以解决这个问题吗?我正在考虑对我的叉子进行核攻击并重新叉子(none 我的 b运行 包含任何有价值的东西),但也许我可以尝试一些破坏性较小的东西?
你可以在你的 fork 中对单个分支进行 nuke 并将它们重置到父级所在的位置:
git fetch parent
git checkout master
git reset --hard parent/master
git push -f
这样一来,您仍将拥有少量要保留的提交,之后您将能够通过它们所在的分支或通过 reflog 来挑选它们。