如何将工作目录复制到新提交
How to copy working directory to a new commit
我有以下提交结构:
a->b->c
现在 c 是一个实验,它与 b 有很大不同(对 b 的任何更改都会导致 c 发生冲突)。我想保留 c,但想停止维护链。因为 b 和 c 之间有太多的冲突,简单的变基将是一大堆工作。
所以我想做
a->b
\->c'
其中 c'
只是 c
中工作区的副本。在 git 中,我会使用 git reset --soft a
并为我的 c'
做一个新的提交,我可以在 mercurial 中做一些等效的事情吗?
所以我要post我最后做了什么,但希望我能得到更好的答案。
- 对 a 进行 "do nothing" 提交(在我的例子中,我添加了一行)。我们需要假货,因为从
b
变基到 a
将不再说 nothing to rebase
.
a->b->c
\->f
hg rebase -s b -d f --keep
克隆整个分支:
a->b->c
\->f->b'->c'
hg histedit
, 折叠 c' 并放下 f.
a->b->c
\->c''
hg prune c
a->b
\->c''
听起来你想使用 revert --all
伪命令(字母a
,c
表示提交的revids):
update -r a
revert --all -r c
commit -m "new c"
strip -r c
可以找到使用 thg GUI 恢复所有内容的指南here
我有以下提交结构:
a->b->c
现在 c 是一个实验,它与 b 有很大不同(对 b 的任何更改都会导致 c 发生冲突)。我想保留 c,但想停止维护链。因为 b 和 c 之间有太多的冲突,简单的变基将是一大堆工作。
所以我想做
a->b
\->c'
其中 c'
只是 c
中工作区的副本。在 git 中,我会使用 git reset --soft a
并为我的 c'
做一个新的提交,我可以在 mercurial 中做一些等效的事情吗?
所以我要post我最后做了什么,但希望我能得到更好的答案。
- 对 a 进行 "do nothing" 提交(在我的例子中,我添加了一行)。我们需要假货,因为从
b
变基到a
将不再说nothing to rebase
.
a->b->c
\->f
hg rebase -s b -d f --keep
克隆整个分支:
a->b->c
\->f->b'->c'
hg histedit
, 折叠 c' 并放下 f.
a->b->c
\->c''
hg prune c
a->b
\->c''
听起来你想使用 revert --all
伪命令(字母a
,c
表示提交的revids):
update -r a
revert --all -r c
commit -m "new c"
strip -r c
可以找到使用 thg GUI 恢复所有内容的指南here