我做了一些本地提交。
但是我想推送最新的那些,如4977和4978 ,不包括之前的那些。
4948 local commit 1 is the ancestor of all commits
有人可以告诉我们在HG中如何做到这一点
4978 local commit 4
|
|
|
4977 local commit 3
|
|
|
4976 local commit 2
|
|
|
4948 local commit 1
答案 0 :(得分:2)
Mercurial存储库旨在具有不可变的历史记录,所以开箱即用这是不可能的。但是,有一些解决方法。
实现这一目标的最简单方法可能是使用histedit extension。您需要通过使用以下
修改.hgrc(或mercurial.ini)来启用它[extensions]
histedit =
然后你可以从命令行运行histedit子命令,并告诉它回顾你关注的变更集......
hg histedit 4948
这将弹出一个文本编辑器,每个变更集旁边都有单词pick
。将pick
更改为drop
以获取您不再需要的更改集,保存并退出,问题变更集将会消失。
请注意,除了防止它被推送到遥控器之外,这将从本地仓库中删除变更集!
答案 1 :(得分:1)
你不能推送提交,也不能推送所有的祖先提交。但是,你可以“折叠”/“崩溃”/“壁球”提交,以摆脱你不喜欢的祖先提交。您可以使用标准histedit extension。
简单地运行
$ histedit 4948
你将看到一个编辑器打开。该编辑包含一个文件,该文件将作为histedit的说明。默认情况下,所有更改集都保持不变,但您可以在行的开头更改关键字以更改此设置。此外,您可以对行重新排序以重新排序相应的提交。
将行开头的关键字更改为fold
将告诉histedit将提交与先前的提交相结合。这样您就可以将历史记录更改为
4978 local commit 4
|
|
|
4977 local commit 3
|
|
|
4948 local commit 1
并将您在local commit 2
中所做的更改“折叠”为local commit 3
。