Mercurial 或 Bitbucket - 将一组提交推送到一个单独的 fork
Mercurial or Bitbucket - push set of commits to a separate fork
假设存储库 A 有一些历史
commit4
^
commit3
^
commit2
^
commit1
^
commit0
如果我现在想 "split" commit2 的存储库 A,即我希望存储库 B 是 A 的一个分支,其中
A 的历史:
commit2
^
commit1
^
commit0
B的历史:
commit4
^
commit3
^
commit2
^
commit1
^
commit0
我如何最好地使用 bitbucket 或 Mercurial Workbench?
使用 TortoiseHg Workbench 您可以执行以下操作:
- 在 Repository Registry 中右键单击 Workbench 中的 A,然后单击 Clone。
- 将目标设置为 B 并单击 克隆。
- 双击 Repository Registry 中的 A 以查看它的提交。
- 右键单击 commit3,select 修改历史记录 然后 select 删除。这将删除 commit3 之后的每个提交,包括 commit3.
- 您现在拥有具有所需结构的存储库 A 和 B。
使用 BitBucket 您可以执行以下操作:
- 转到 A 的 Overview 页面,然后单击左侧菜单中的 Fork 创建一个名为 B 的 A 分支。
A 和 B 现在都将拥有与 A 相同的完整提交集。
- 再次返回 A 的概览,然后单击左侧菜单底部的设置。
- 在设置菜单中点击剥离变更集。
- 在框中输入 commit3 然后点击 Preview Strip.
- 这将向您显示将被删除的提交,仔细检查它是否显示预期的提交,在本例中为 commit3 和 commit4.
- 单击确认删除 删除提交。
这些策略需要注意的问题是:
- 确保您在某处对 A 进行了完整备份,因为剥离操作具有破坏性。
- 如果存在 A 的现有克隆,并且其中一个被推送到 BitBucket 上的 A,那么剥离的更改将被再次推送。您需要确保所有克隆也都进行了剥离,或者制作了新的克隆。
- 如果您从 B 推送到 A,那么剥离的更改可能会被推回,因为它们都来自同一个根。
假设存储库 A 有一些历史
commit4
^
commit3
^
commit2
^
commit1
^
commit0
如果我现在想 "split" commit2 的存储库 A,即我希望存储库 B 是 A 的一个分支,其中
A 的历史:
commit2
^
commit1
^
commit0
B的历史:
commit4
^
commit3
^
commit2
^
commit1
^
commit0
我如何最好地使用 bitbucket 或 Mercurial Workbench?
使用 TortoiseHg Workbench 您可以执行以下操作:
- 在 Repository Registry 中右键单击 Workbench 中的 A,然后单击 Clone。
- 将目标设置为 B 并单击 克隆。
- 双击 Repository Registry 中的 A 以查看它的提交。
- 右键单击 commit3,select 修改历史记录 然后 select 删除。这将删除 commit3 之后的每个提交,包括 commit3.
- 您现在拥有具有所需结构的存储库 A 和 B。
使用 BitBucket 您可以执行以下操作:
- 转到 A 的 Overview 页面,然后单击左侧菜单中的 Fork 创建一个名为 B 的 A 分支。
A 和 B 现在都将拥有与 A 相同的完整提交集。 - 再次返回 A 的概览,然后单击左侧菜单底部的设置。
- 在设置菜单中点击剥离变更集。
- 在框中输入 commit3 然后点击 Preview Strip.
- 这将向您显示将被删除的提交,仔细检查它是否显示预期的提交,在本例中为 commit3 和 commit4.
- 单击确认删除 删除提交。
这些策略需要注意的问题是:
- 确保您在某处对 A 进行了完整备份,因为剥离操作具有破坏性。
- 如果存在 A 的现有克隆,并且其中一个被推送到 BitBucket 上的 A,那么剥离的更改将被再次推送。您需要确保所有克隆也都进行了剥离,或者制作了新的克隆。
- 如果您从 B 推送到 A,那么剥离的更改可能会被推回,因为它们都来自同一个根。