在rebase后重新提交回复

时间:2013-01-26 20:15:42

标签: mercurial rebase

我正在寻找一种简单的方法来在重新定位之后引入额外的提交,这是告诉别人不要反驳的好理由。

基本上我们有一个项目crons。我经常对此进行更改,当我请求时,项目的维护者会进行更改并每次重新

这通常没问题,但它可能会在两种情况下导致问题:

  • 同时从两个分支发布
  • 之后必须发布额外的提交。

例如,我提交了修订版1000。维护人员提取和修改以创建修订版1000',但几乎在同一时间我意识到一个可怕的错误并创建修订10011000的孩子)。由于目标分支中不存在1000,因此会创建一个无法使用的合并,维护者通常会嘲笑我并告诉我再试一次(这需要我在{{1)重新检查主分支从另一个结帐手动创建和导入补丁)。我相信你可以看到同样的问题,我试图同时从两个独立的分支发布同样的问题。

无论如何,一旦主分支有1000',是否可以执行任何操作来引入1000'而无需再次合并相同的更改?还是反驳毁了这个?无论有什么我可以说让Maintainer停止变基?他使用不正确吗?

1 个答案:

答案 0 :(得分:4)

告诉你的维护者不要再做个杰克了。

重新定位只能由您完成,即创建您想要变更的变更集,以及完成更改集:

  • 已与其他人分享
  • 从别人那里得到

您的维护者可能想要一个非分布式版本控制系统,例如Subversion,其中更改集遵循直线,而不是DVCS的分支特性。在这方面,Mercurial的选择是错误的,或Mercurial的使用是错误的。

另请注意,重新定位是更改历史记录的一种方式,并且由于Mercurial不鼓励(更改历史记录),因此只能将扩展作为扩展程序使用,而不是“开箱即用”的扩展程序Mercurial配置。

所以回答你的问题:不,因为你的维护者坚持打破DVCS的性质,这些工具会对你(和他)进行打击,你将很难获得与之合作的工具。你。

告诉维护人员接受DVCS的真正工作方式。现在,他可能仍然坚持不接受他的存储库中的新分支或头部,并且在将单个头部推回到他的存储库之前坚持要求拉动和合并,但这没关系。

重新分配共享更改集不是。

如果你真的想使用变基,正确的方法就是这样:

  1. 您从某个源存储库中提取最新更改
  2. 您在本地提交了大量更改集,修复了错误,添加了新功能,以及
  3. 然后你尝试推送,被告知这将在目标存储库中创建新的头。这告诉您目标存储库中有新的更改集,这是您上次提取时未获得的,因为它们之后已添加
  4. 相反,你拉,这将在你的本地存储库中添加一个新头。现在您拥有了从新的变更集创建的头部,以及从其他人创建的源存储库中检索到的头部。
  5. 然后,您根据从源存储库获取的更改集重新设置更改集,实质上移动历史记录中的更改集,以显示您从当前源中的最新变更集开始工作存储库
  6. 然后,您尝试新推,继续
  7. 最终结果是目标存储库和您自己的存储库将具有更多线性变更集历史记录,而不是分支,然后是合并。

    但是,由于DVCS中的多个分支完全正常,因此不必完成所有这些。你可以合并,继续工作。这就是DVCS应该如何工作的方式。如果您真的想,重新绑定只是一个额外的工具,您可以使用