【发布时间】:2019-01-11 20:26:40
【问题描述】:
我在这里陷入了一些 git-funk。我需要自己解决这个问题。
我加入了一个新团队并创建了一个功能分支:
git checkout -b feature_branch
做了一些更改,然后将它们提交/推送到分支。
git commit -am "Changes"
git push origin feature_branch
有人在我的 PR 上留下了评论,所以我进行了更改,然后签出 master 并重新设置我的分支,然后再次提交/推送到该分支:
// from feature_branch make some changes
git commit -am "New changes"
git checkout master
git checkout feature_branch
git rebase origin/master
git push feature_branch
一旦我这样做了,我注意到我的 PR(在 Github 上)接受了其他人的提交。然后我被告知,这个新团队中的典型方法是结帐以掌握并合并回我的分支而不是变基。
现在这是最时髦的部分——我开始使用 git reset --hard 并选择了我想要的提交,该提交在其他人的提交之前。
一切都很好,至少我是这么认为的。然后我把它推了上去,它似乎已经从我的 PR 中删除了其他人的提交。
我今天早上查了一下,现在有一堆其他人的提交被拾取了。
所以现在我处于这种奇怪的状态。我查看了我的 PR,几乎有 30 个提交(其中 6 个来自不同的人)。实际的差异(文件更改)只是我接触的文件,这很好,但历史本身看起来很荒谬。
清理此问题的最佳方法是什么?一切都建议使用git rebase,但是,我被建议不要使用rebase。
不幸的是,我需要保留这个分支。清理它并删除除我之外的所有其他提交的最佳方法是什么?只需将其完全重置,然后将更改挑选回分支?
请帮忙:|
编辑:这是历史的示例:
Commits on Jul 30, 2018
<SOMEONE ELSES>
Commits on Jul 31, 2018
<SOMEONE ELSES>
<MY ORIGINAL COMMIT>
<SOMEONE ELSES>
Commits on Aug 1, 2018
<SOMEONE ELSES>
<MY COMMIT [Merge branch master into my feature branch]>
<MY COMMIT>
<SOMEONE ELSES>
<MY COMMIT>
<MY COMMIT>
<SOMEONE ELSES>
<MY COMMIT>
etc etc
【问题讨论】: