【问题标题】:How to copy working directory to a new commit如何将工作目录复制到新提交
【发布时间】:2020-05-07 15:01:04
【问题描述】:

我有以下提交结构:

a->b->c

现在 c 是一个实验,它与 b 有很大的不同(直到 b 的任何更改都会导致 c 中的冲突)。我想保留 c,但想停止维护链。因为 b 和 c 之间有很多冲突,所以简单的变基将是一堆工作。

所以我想做

a->b
 \->c'

其中c' 只是c 中工作区的副本。在 git 中我会使用 git reset --soft a 并为我的 c' 进行新的提交,我可以在 mercurial 中做一些等效的事情吗?

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    听起来你想使用revert --all

    伪命令(字母a,c 表示重新提交):

    1. update -r a
    2. revert --all -r c
    3. commit -m "new c"
    4. strip -r c

    使用 thg GUI 使用 revert all 的指南可以找到 here

    【讨论】:

    • 这就是我要做的。除了最后的条带是可选的和/或您可能想等到以后再这样做,只是作为备份。您也可以撤消条带,但这有点困难。
    【解决方案2】:

    所以我要发布我最终做了什么,但希望我能得到更好的答案。

    1. 在 a 上进行“什么都不做”提交(在我的例子中,我添加了一行)。我们需要假货,因为从b 重新定位到a 将不再说nothing to rebase
    a->b->c
    \->f
    
    1. hg rebase -s b -d f --keep 克隆整个分支:
    a->b->c
    \->f->b'->c'
    
    1. hg histedit,折叠 c' 并放下 f。
    a->b->c
    \->c''
    
    1. hg prune c
    a->b
    \->c''
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      相关资源
      最近更新 更多