我对 rebase 命令有点担心。如此之多,以至于我真的拖延了完成这个为 libGDX 实现陀螺仪功能的 pull 请求。 https://github.com/libgdx/libgdx/pull/3361
如果你看一下我的提交,就会发现我很早就提交了,而且经常提交。然后我同步了,投入了更多。现在我必须再次同步,在他们接受此 pull 请求之前测试所有内容。
所以,有大量的提交与 merge 等交织在一起。我认为这是一团糟。
维护者希望我将我的提交压缩为一个。说得通。不过,这就是我的天真发挥最大作用的地方。
rebase 只会影响我的提交吗?或者是否有可能通过在我的分支中重新建立基础并 merge 来覆盖所有项目历史记录?
我应该重新开始,检查master,进行所有相同的更改,然后发出另一个 pull 请求吗?
最佳答案
这个问题的根源实际上与您的 libgdx 分支在 master 分支中完成的更改有关。理想情况下, pull 请求的工作应该在 Git 的“功能”或“主题”分支中完成:
fork 主 libgdx 存储库
克隆您的分支,并添加一个名为“upstream”的远程指向原始存储库:
git clone https://github.com/snovak/libgdx.git cd libgdx git remote add upstream https://github.com/libgdx/libgdx.git
从您的 master 中创建一个新的主题分支:
git checkout -b android_gyroscope_implementation master
完成工作,并进行任意数量的提交
根据“上游”分支的新更改重新调整您的提交:
git fetch upstream # Keep your commits git rebase upstream/master # "Squash" your commits interactively to summarize your work git rebase -i upstream/master
当您准备好 pull 请求时,将更改推送到您的 fork
# The first time git push origin -u android_gyroscope_implementation # Subsequent pushes just need: git push origin HEAD
提交您的 pull 请求
从现在开始,只需将
upstream/master
merge 到 android_gyrscope_implementation 中即可维护历史记录。原始存储库的维护者可以执行
git merge --squash
,或者在最终 merge 之前,您可以执行另一个git rebase -i上游/master
> 并将所有提交压缩为一个。
关于git - Squash - rebase - 主历史关注点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33829117/