我在这里陷入了一些Git困境。我需要通过Git技巧使自己摆脱它。
我加入了一个新的团队并创建了一个功能分支:
git checkout -b feature_branch
进行了一些更改,然后提交/推送到该分支上。
git commit -am "Changes"
git push origin feature_branch
有人在我的PR上留下了评论,所以我进行了更改,然后切换到主分支并重新基于我的分支,再次提交/推送到该分支:
// 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
一旦我这样做了,我就注意到我的 GitHub PR(拉取请求)会捕捉到别人的提交记录。然后有人告诉我,这个新团队的典型方法是从主分支(master)检出并合并回我的分支,而不是变基(rebase)。现在是非常奇怪的部分——我开始尝试使用“git reset --hard”来处理,并选择了我想要的一个先于其他人提交的提交记录。
一切看起来都很好,但我之后推送(push)了它上去,似乎已经从我的PR中移除了那个其他人的提交记录。
今天早上我查看时,发现有很多其他人的提交记录被捕捉到了。
所以现在我处于这种奇怪的状态。当我查看我的PR时,有近30个提交记录(其中6个来自不同的人)。实际的差异(更改的文件)只有我自己修改的文件,这很好,但是历史记录本身看起来很荒谬。
如何最好地清理这个问题呢?所有东西都建议使用“git 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