【发布时间】:2018-09-17 10:46:56
【问题描述】:
在 HG 中,是否有任何命令可以让我从另一个分支获取文件的文件内容,而无需切换/签出到特定分支?
【问题讨论】:
在 HG 中,是否有任何命令可以让我从另一个分支获取文件的文件内容,而无需切换/签出到特定分支?
【问题讨论】:
如果您使用的是 TortoiseHG,您可以使用“保存在修订版”命令来执行此操作。
步骤:
运行 Tortoise 工作台
在历史记录中找到具有您想要的文件修订的变更集(可以在任何分支中)
abcd1234
右键单击该变更集文件列表中的特定文件
选择“在修订时保存...”并告诉它将文件放在哪里。
该文件通常命名为filename@abcd1234.ext,以免您将其与当前版本混淆。
【讨论】:
类似于other answer,您可以使用cat 命令,但方式略有不同:
hg cat --rev=11204 path/to/file
这将从版本 #11204 中选择文件,该文件可以是任何分支。
您可能需要添加--output 开关,让您可以使用任何您想要的文件名和/或位置:
hg cat --output=C:/new/path/to/file/filename@11204.ext --rev=11204 path/to/file
【讨论】:
将cat 子命令与您要查找的提交的修订号一起使用。
这是一个例子。我用文件file 的内容创建了两个分支,表明它在哪个分支上。然后我使用cat 来检查两个分支上的内容
% hg init foo
% cd foo
% echo "default branch" > file
% hg add file
% hg ci -m 'default' file
% echo "default 2nd rev" > file
% hg ci -m 'default 2nd rev' file
% hg glog
@ changeset: 1:305b2b5ccbd9
| tag: tip
| user: dj
| date: Mon Sep 17 14:11:20 2018 -0400
| summary: default 2nd rev
|
o changeset: 0:6d22c68d8abc
user: dj
date: Mon Sep 17 14:10:56 2018 -0400
summary: default
% hg co -r 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% echo "new branch" > file
% hg branch 'new branch'
marked working directory as branch new branch
(branches are permanent and global, did you want a bookmark?)
% hg ci -m 'new branch'
% hg glog
@ changeset: 2:4c8d2181526c
| branch: new branch
| tag: tip
| parent: 0:6d22c68d8abc
| user: dj
| date: Mon Sep 17 14:12:30 2018 -0400
| summary: new branch
|
| o changeset: 1:305b2b5ccbd9
|/ user: dj
| date: Mon Sep 17 14:11:20 2018 -0400
| summary: default 2nd rev
|
o changeset: 0:6d22c68d8abc
user: dj
date: Mon Sep 17 14:10:56 2018 -0400
summary: default
% hg branches
new branch 2:4c8d2181526c
default 1:305b2b5ccbd9
% hg cat -r 2 file
new branch
% hg cat -r 1 file
default 2nd rev
【讨论】:
hg cat -r "branch('new branch')" file