我有一对应该只是一个提交.如果我使用git,我会使用:
git rebase -i <some-commit-before>
Run Code Online (Sandbox Code Playgroud)
然后压扁它们.
我可以用mercurial做到吗?如果是这样,怎么样?
Ry4*_*ase 89
是的,您可以使用mercurial执行此操作,而无需通过Concatenating Changesets进行任何扩展.
或者,如果您想使用扩展程序,您可以使用:
G. *_*cki 41
我最喜欢的是hg strip --keep命令.然后我在一次提交中提交所有更改.
对我来说这是最快,最舒适的方式,因为我喜欢在日常工作中做很多小事;)
注1:strip需要mq启用内置扩展.
注2:我最喜欢的Git/Mercurial客户端(SmartGit/Hg)在默认情况下追加--keep参数strip.更方便的是:它提供了以下选项join commits:]
Mar*_*cek 31
该衍合延长工作就像一个魅力.要压缩2次提交:
$ hg rebase --dest .~2 --base . --collapse
Run Code Online (Sandbox Code Playgroud)
Dot是当前版本的快捷方式.
当你在一个分支上进行一些提交并希望将它们全部折叠成一个时,它会更容易:
$ hg rebase --dest {destination branch (e.g. master)} --base . --collapse
Run Code Online (Sandbox Code Playgroud)
这是如何工作的:

(来自http://mercurial-scm.org/wiki/RebaseExtension#Collapsing)
Pul*_*yal 13
如果您正在阅读此答案,则可以忘记此答案中提到的所有其他选项,并使用evolve扩展中的
fold命令.
evolve是mercurial的延伸,它帮助我们拥有安全可变的历史,但它仍然是实验性的.您可以通过从其repo克隆它并将其添加到.hgrc中来使用它.
[extensions]
evolve = ~/evolve/hgext/evolve.py
Run Code Online (Sandbox Code Playgroud)
假设您在主目录中克隆了evolve repo.现在你很高兴.你也可以寻求帮助hg help fold.
你告诉fold要压缩/折叠一个没有破坏的线性提交链.折叠的作用是,它创建一个新的变更集,其中包含所有变更集的更改,并将所有这些变更标记为过时.您可以在docs上更深入地了解这一点.
现在假设您有以下历史记录.
a -> b -> c -> d -> e -> f -> g
Run Code Online (Sandbox Code Playgroud)
你想挤压e,f和g.你可以做
hg up g
hg fold -r e
Run Code Online (Sandbox Code Playgroud)
结果将是
a -> b -> c -> d -> h
Run Code Online (Sandbox Code Playgroud)
h变量集在哪里包含来自所有三个提交的更改e,f以及g.
您也可以从历史中间折叠变更集,即不一定要选择包含尖端的链.假设你想折叠b,c和d.你可以做
hg up d
hg fold -r b
hg evolve --all
Run Code Online (Sandbox Code Playgroud)
这将导致
a -> i -> j
Run Code Online (Sandbox Code Playgroud)
其中i是的折叠变更b,c,d和j是相同的修改集h.
必须阅读Evolve用户指南.
| 归档时间: |
|
| 查看次数: |
54405 次 |
| 最近记录: |