gpt4 book ai didi

mercurial - 使用 hg cp --after 的效果修改提交

转载 作者:行者123 更新时间:2023-12-02 10:21:51 25 4
gpt4 key购买 nike

我有一个文件 before.txt,我想将其拆分为两个较小的文件。我应该做的是

$ hg cp before.txt part1.txt # Then edit part1.txt
$ hg mv before.txt part2.txt # Then edit part2.txt
$ hg commit

然后,part1.txt 和part2.txt 都将 before.txt 作为其历史记录的一部分,因此差异将显示为删除较大文件的部分内容,而不是删除一个文件并使用某些文件创建一个新文件其内容。

然而,我实际上做的是

$ cp before.txt part1.txt # Then edit part1.txt
$ hg mv before.txt part2.txt # Then edit part2.txt
$ hg commit

所以 before.txt 仅存在于我的两个文件之一的历史记录中。如果我没有运行hg commit,我似乎很清楚我可以用

来解决我的问题
$ hg cp --after before.txt part1.txt

或者类似的东西。而且我还没有将此提交推到上游,所以我应该能够按照我喜欢的方式编辑它。但我不知道该怎么做。当我运行 hg cp 时,我看到:

$ hg cp --after before.txt part1.txt
before.txt: No such file or directory
before.txt: No such file or directory
abort: no files to copy

这是有道理的:它无法将该编辑记录为新提交的一部分,因为源文件不存在。我将其记录为先前提交的一部分,但我不知道如何做到这一点,除非将其记录为新提交的一部分,然后修改它进入之前的提交。

最佳答案

这是解决这种情况的一种方法:

$ hg shelve       # get any miscellaneous, unrelated changes out of the way
$ hg up <parent of revision with the mistake in it>

$ hg cp before.txt part1.txt
$ hg mv before.txt part2.txt

$ hg revert -r <revision with the mistake in it> --all
$ hg commit
$ hg strip <revision with the mistake in it>

(我实际上并没有尝试所有这些命令,希望没有拼写错误!)

第一步是可选的,具体取决于您的工作目录的状态。

现在 part1.txtpart2.txt 应该具有正确的内容。使用revert只是为了避免手动重新编辑文件更改。但如果看起来更简单,您也可以手动重做。

使用恢复将另一个变更集的效果拉入工作文件夹是我经常使用的技巧。它就像一种手动修改方式,为您提供了完全的灵 active 。但只有当您将工作副本恢复到的修订版与工作副本的父修订版密切相关时,它才能正常工作。否则会产生许多令人讨厌的变化。

关于mercurial - 使用 hg cp --after 的效果修改提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56156109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com