Git:在Local Rebase / Squash之后覆盖Remote Feature Branch上的多个提交

时间:2013-12-23 23:31:08

标签: git github

  • 我在 myusername / X
  • otherusername / X 的GitHub回购分配到我自己的帐户
  • 我一直在本地开发并将提交推送到分支 myfeature 上的 myusername / X ,并已提交合并 myusername / X myfeature <的拉取请求/ strong>进入 otherusername / X master
  • 在开发过程中并收到有关我的公开请求的反馈,我已经对 myfeature 做了10次提交。现在开发已经完成,我们已经准备好合并了,所以我将我的提交从git rebase -i origin/master本地压缩到一个提交。
  • 现在, myusername / X 上的 myfeature 分支有我提升的10个提交,而我的本地 myfeature 只有一个提交
  • 当我尝试git push myfeature 时, myusername / X myfeature 将只有一次提交,并且可以干净地合并到 otherusername / X master ,git抱怨我的本地分支在远程分支后面,我需要从远程分支中提取更改。但这会重新创建我刚刚压缩的所有提交。

如何更新 myusername / X myfeature 分支只进行一次提交?

2 个答案:

答案 0 :(得分:2)

你可能正在寻求强迫推动。例如git push -f remote myfeature

发生的事情是,当你在本地重新定位并压缩提交时,你偏离了远程分支的历史。 (例如你重写了历史)。作为一个专注的功能分支,你是唯一的开发者,在这种情况下,强制推送可能是好的,但是注意到你会发现关于重写历史和强制推动的许多警告,因为你很容易导致坏事发生。

答案 1 :(得分:1)

我能想象到的最简单的方法如下:

您保留本地 myfeature ,删除远程分支并使用您当地的 myfeature

上的单一提交重新创建它
git push remote :myfeature
git push remote myfeature

remote in this case is your myusername/X