Pao*_*olo 248 version-control mercurial branch dvcs revert
我在本地使用Mercurial进行项目(这是唯一没有推送/拉动其他地方的回购).
到目前为止,它有一个线性历史.然而,我正在研究的当前事情我现在已经意识到这是一种可怕的方法,我想在开始之前回到版本并以不同的方式实现它.
我对Mercurial中的branch/ revert/ update -C命令有点困惑.基本上我想恢复到版本38(目前在45)并让我的下一个提交有38作为父母并从那里继续.我不在乎修改39-45是永远丢失还是最终落入他们自己的死胡同.
我需要哪个命令/命令集?
Mar*_*ler 400
这是命令的备忘单:
hg update更改您的工作副本父版本,并更改文件内容以匹配此新的父版本.这意味着新的提交将从您更新的修订版继续进行.
hg revert仅更改文件内容并单独保留工作副本父修订.hg revert当您决定不想保留对工作副本中的文件所做的未经修改的更改时,通常会使用此选项.
hg branch启动一个新的命名分支.将命名分支视为您分配给变更集的标签.因此,如果您这样做hg branch red,则以下变更集将被标记为属于"红色"分支.这可以是组织变更集的一种很好的方法,特别是当不同的人在不同的分支上工作时,您以后想要查看变更集的来源.但是你不想在你的情况下使用它.
如果你使用hg update --rev 38,那么变更集39-45将留作死胡同 - 我们称之为悬空头.您推送时会收到警告,因为您将在您推送的存储库中创建"多个头".警告就在那里因为他们建议有人需要合并,所以留下这样的头脑是不礼貌的.但在你的情况下,你可以继续前进,hg push --force因为你真的想要让它悬空.
如果您还没有将修订版39-45推到其他地方,那么您可以将它们保密.它非常简单:hg clone --rev 38 foo foo-38您将获得一个仅包含最新版本38的新本地克隆.您可以继续使用foo-38并推送您创建的新(好)更改集.你的foo克隆中仍然会有旧的(坏的)修订版.(您可以根据需要自由重命名克隆,例如,footo foo-bad和foo-38to foo.)
最后,您还可以使用hg revert --all --rev 38然后提交.这将创建一个修订版46,看起来与修订版38完全相同.然后你将继续使用修订版46.这不会在历史中以同样明确的方式创建一个fork hg update,但另一方面你不会抱怨有关多头.hg revert如果我与其他已根据修订版45开展自己的工作的人合作,我会使用hg update.否则,更明确.
van*_*van 149
hg update [-r REV]
Run Code Online (Sandbox Code Playgroud)
如果稍后提交,您将有效地创建一个新分支.然后,您可以继续仅在此分支上工作或最终将现有分支合并到其中.
hyd*_*yde 30
我刚刚遇到一个需要将一个文件恢复到以前版本的情况,就在我完成提交和推送之后.用于指定这些修订的简写语法不包含在其他答案中,因此这里有命令来执行此操作
hg revert path/to/file -r-2
Run Code Online (Sandbox Code Playgroud)
这-2将恢复到上一次提交之前的版本,使用它-1只会恢复当前未提交的更改.
恕我直言,更hg strip -r 39适合这种情况.
它需要启用mq扩展,并且具有与Martin Geisler推荐的"克隆回购方法"相同的限制:如果变更集以某种方式发布,它将(可能)在某个时间点返回到您的仓库,因为您只更改了你当地的回购.
小智 6
使用后hg update -r REV,在答案中不清楚如何提交更改,以便您可以推送.
如果您只是在更新后尝试提交,Mercurial认为没有任何更改.
我必须首先对任何文件进行更改(比如在README中),因此Mercurial认识到我做了一个新的更改,然后我可以提交.
然后如上所述创建了两个头.
为了在推动之前摆脱另一个头,然后我按照No-Op Merges步骤来解决这种情况.
然后我才能推.
小智 5
上面的答案最有用,我学到了很多东西。但是,对于我的需要,简洁的答案是:
hg revert --all --rev ${1}
hg commit -m "Restoring branch ${1} as default"
Run Code Online (Sandbox Code Playgroud)
${1}版本号或分支名称在哪里。这两行实际上是bash脚本的一部分,但是如果您想手动执行,它们可以很好地工作。
如果您需要向发布分支添加修补程序,但是需要从默认版本进行构建,这将很有用(直到我们正确配置CI工具并能够从分支构建,然后再取消发布分支)。
| 归档时间: |
|
| 查看次数: |
162451 次 |
| 最近记录: |