是否可以从另一台机器 'pull' 未提交的更改?
Is it possible to 'pull' uncommitted changes from another machine?
假设我有两台机器有一个 Mercurial 存储库,其中包含一些修订的本地副本,并且没有对该本地副本进行未提交的更改。现在我在一台机器上做了一些本地更改而不提交。
是否可以在第二台机器上 pull/replicate 这些未提交的更改?即让第二台机器在不提交的情况下将相同的更改应用到其本地副本?
注意:我对仅在第二台机器上执行的单个命令或一行感兴趣。
您可以做的是 hg diff --git > changes.patch
将所有更改导出到第一台计算机上的文件中,然后 hg import --no-commit changes.patch
在第二台计算机上导入这些更改。
Mercurial 不会为您做这件事;您只能推送和拉取存储库中的内容。但是,如果您通过不受限制的 ssh 访问上游计算机,则可以将它用于 运行 远程 hg diff
并将结果作为补丁应用。例如(在 "second machine" 上):
% hg paths
default = ssh://example.com/path/to/repo
% ssh example.com hg -R path/to/repo diff > uncommitted.patch
% hg import --no-commit uncommitted.patch
详细说明:如果您需要能够查看未提交的文件,您可以在远程机器上安排 ssh shell 访问并按上述方式进行.如果远程机器的所有者不希望你这样做,好吧,mercurial 不会帮你四处寻找。
的单行版本:
ssh example.com hg -R path/to/repo diff | hg import --no-commit -
感谢@ReimerBehrends 建议 -
而不是 /proc/self/fd/0
。
假设我有两台机器有一个 Mercurial 存储库,其中包含一些修订的本地副本,并且没有对该本地副本进行未提交的更改。现在我在一台机器上做了一些本地更改而不提交。
是否可以在第二台机器上 pull/replicate 这些未提交的更改?即让第二台机器在不提交的情况下将相同的更改应用到其本地副本?
注意:我对仅在第二台机器上执行的单个命令或一行感兴趣。
您可以做的是 hg diff --git > changes.patch
将所有更改导出到第一台计算机上的文件中,然后 hg import --no-commit changes.patch
在第二台计算机上导入这些更改。
Mercurial 不会为您做这件事;您只能推送和拉取存储库中的内容。但是,如果您通过不受限制的 ssh 访问上游计算机,则可以将它用于 运行 远程 hg diff
并将结果作为补丁应用。例如(在 "second machine" 上):
% hg paths
default = ssh://example.com/path/to/repo
% ssh example.com hg -R path/to/repo diff > uncommitted.patch
% hg import --no-commit uncommitted.patch
详细说明:如果您需要能够查看未提交的文件,您可以在远程机器上安排 ssh shell 访问并按上述方式进行.如果远程机器的所有者不希望你这样做,好吧,mercurial 不会帮你四处寻找。
ssh example.com hg -R path/to/repo diff | hg import --no-commit -
感谢@ReimerBehrends 建议 -
而不是 /proc/self/fd/0
。