- 我在GitHub上派生了另一个仓库。
- 写了一些代码并向上游提交了一个拉取请求。
- 上游主分支使用了squash选项合并。
- 现在下一个拉取请求包括新代码以及旧的提交记录。所以它们越来越多。
我该怎么办?
- 这些仓库在代码方面完全同步。
- 但是,GitHub顶部的徽章显示我的派生版本比上游版本多xx个提交记录。
- 我试图将上游合并到我的仓库中(但没有效果,因为它们已经同步)。
- 我不确定变基是否有用,因为有我的提交和其他人的提交。所以那里一团糟,我不知道要变基什么。
我该怎么办?
master
重置为 upsteam master
并进行 force push
操作 - 在此过程中会失去您的个人提交,但是可以获得压缩后的提交。git switch master
git fetch
git reset --hard upsteam/master
git push -f origin
这是一项破坏性操作,强制推送到主分支可能会被Github仓库设置阻止,但有时必须这样做。
如果上游仓库无论如何都会压缩您的提交记录,您可能需要在创建拉取请求之前考虑在自己的端上进行压缩。
我不确定rebase是否有帮助,因为有我的提交和其他人的提交。所以那里很混乱,我不确定该如何rebase。
执行git log
命令查看你的下一个特性分支(从中你想要进行第二个拉取请求)的位置:
git log --graph --format=format:"%h% - %aD (%ar)%d%n %s - %an" --abbrev-commit --all --branches
刷新您的上游:
git fetch upstream
将您的提交内容仅基于拉取请求目标分支进行变基
git rebase --onto upstream/master yourFirstCommit~1 yourBranch
这将会把你的每一个提交(在上面的git log
图表中看到的)从"yourFirstCommit"之后一直rebase到你分支的HEAD。
一旦这些提交被移动到upstream/master
的顶端,你的pull request(在执行git push --force之后)将会得到更新,仅展示你自己的提交。