![]() |
1
230
VonC有 the answer you're looking for ,rebase扩展。然而,值得花一两秒钟思考一下为什么mq和rebase在mercurial中默认都不启用:因为mercurial都是关于不可磨灭的变更集的。当我以你描述的方式工作时,几乎每天都是这样,下面是我采取的模式:
这真的是所有必要的。我最终得到了一个新的功能123克隆我可以轻松地推回到主线时,我很高兴。但最重要的是,我 从未改变历史 . 有人可以查看我的cset,看看它们最初是针对什么编写的,以及我在整个工作中对主线中的更改的反应。不是每个人都认为这有价值,但我坚信,源代码控制的工作不是向我们展示我们希望发生的事情,而是实际发生的事情——每个死区和每个重构都应该留下不可磨灭的痕迹,而重新调整和其他历史编辑技术隐藏了这一点。 现在我把肥皂盒收起来,去选冯克的答案。:) |
![]() |
2
99
你可能在找 Rebase Extension . (作为 SummerOfCode 2008 )
到:
AS commented below 通过 steprobe :
(
Mojca 提到:
AS illustrated below 通过 Jonathan Blackburn :
|
![]() |
3
43
假设您有一个现代化的hg安装,您可以简单地添加:
给某人写信。
然后你可以使用命令
|
![]() |
4
21
我认为上面的答案并没有达到OP的目标,即维护他的任务分支,只是相对于父分支的稍后一点重新调整。 假设我从这个图开始(使用graphlog扩展生成)。严肃的极客喜欢画图)。
如果我在Feature3分支上,并且想将其从Againagainagainagain提交中移除,我知道我会运行
任务完成了吗?我不这么认为。问题是,当Feature3分支上的提交在Againagainagainagainagainagainagainagainagainagainagainagainagainagainagainagainagainagainagain上时, Feature3分支已删除 . 我的提交已经转移到默认分支,这是我最初试图避免的。 在git中,结果如下:
请注意,feature3分支仍然存在,两个提交仍在feature3分支上,默认情况下不可见。如果不保留任务分支,我看不出这在功能上与合并有什么不同。
更新
:我发现了
|
![]() |
5
3
因为有些人已经附和说他们认为保持每一个迭代都是好的,我将指出对于更大的开源项目来说,接受充满合并和开发迭代的变更将导致一个混乱的主线修订历史,并且使修订历史减少我们我很想看看现在的版本是怎么做到的。 当提交的更改在被接受之前由未编写更改的人进行审阅时,这种方法可以很好地工作,因此进入主线的更改通常会被调试和工作。当你回溯到一条直线的原点时,你会看到它所伴随的所有变化,而不是它所参与的变化发展过程中的某个点。 这个 x265 contributors 页面说明 如何重新提交正在处理的一组更改,以使它们准备好提交 到X265项目。(包括使用tortoisehg提交单个文件中的一些但不是所有更改,如git gui的stage/unstage diff hunk for commit)。 这个过程是将hg更新到上游提示,然后在工作目录中获得所有未提交的更改。搁置不属于您要提交的内容的任何内容,然后将其余内容拆分为适当的多个单独提交,并提供漂亮的提交消息。 我想您应该复制/粘贴,然后编辑您正在修改的补丁集以前迭代的提交消息。或者您可以移植旧的提交(git语言中的cherry pick),然后逐个修改它们,以获取旧的提交消息作为编辑的起点。 |
![]() |
Harry · 如何在编译时获取克隆的git仓库的标签 6 月前 |
![]() |
Ooker · 如何从blob中删除秘密? 6 月前 |
![]() |
hasdrubal · git日志图智能分支过滤器 6 月前 |
![]() |
J. Doe · 为什么git中没有跟踪git文件? 7 月前 |