Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mercurial的更新会覆盖我的更改吗?_Mercurial - Fatal编程技术网

mercurial的更新会覆盖我的更改吗?

mercurial的更新会覆盖我的更改吗?,mercurial,Mercurial,我使用hg命令从存储库(mercurial存储库)更新项目 问题是,从上次更新开始,我为自己修改了一些文件。现在的问题是,从存储库更新将覆盖我的更改。如何防止这种情况发生?hg pull只检索新的历史记录,因此不会影响未提交的更改 hg update将更新到tip,但未提交的更改将与新的父项合并 您不会丢失任何东西,不过如果合并中存在冲突,您的合并工具可能会运行 但是,请注意,hg update-C,将“干净地”更新提示,抛出未提交的修改 例子 创建一个简单的两个变更集数据库。第一个变更集(0)

我使用hg命令从存储库(mercurial存储库)更新项目


问题是,从上次更新开始,我为自己修改了一些文件。现在的问题是,从存储库更新将覆盖我的更改。如何防止这种情况发生?

hg pull
只检索新的历史记录,因此不会影响未提交的更改

hg update
将更新到tip,但未提交的更改将与新的父项合并

您不会丢失任何东西,不过如果合并中存在冲突,您的合并工具可能会运行

但是,请注意,
hg update-C
,将“干净地”更新提示,抛出未提交的修改

例子 创建一个简单的两个变更集数据库。第一个变更集(0)有两行。第二个变更集(1)有四行

C:\>md example
C:\>cd example
C:\example>hg init
C:\example>echo Line1 >file.txt
C:\example>echo Line2 >>file.txt
C:\example>hg ci -Am "first checkin"
adding file.txt
C:\example>echo Line3 >>file.txt
C:\example>echo Line4 >>file.txt
C:\example>hg ci -Am "2nd checkin"
用两行代码更新回第一个(早期)变更集

C:\example>hg update 0
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\example>type file.txt
Line1
Line2
通过添加另一行对文件进行更改
hg st
显示已进行了更改,但尚未使用
hg ci
提交更改

C:\example>echo Line5 >>file.txt
C:\example>hg st
M file.txt
现在更新到更新的变更集。在这种情况下,合并工具将打开,因为此新变更集中的“Line5”与“Line3”冲突。我解决了合并并保存了

C:\example>hg update
merging file.txt
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
C:\example>type file.txt
Line1
Line2
Line3
Line4
Line5
没有损失


还有签出和其他。

对不起,您所说的未提交更改是什么意思?所以你说我的更改不会丢失?现在,当我运行“hg update”时,会打开一个窗口(认为是diff),显示我所做的更改和来自存储库的更改之间的差异。我按了“q!”对吗?“未提交”表示您已经做了更改,但还没有通过
hg commit
hg ci
将它们签入Mercurial。我不熟悉您的合并工具,如果它像
vi
“q!”将不保存更改而退出。合并工具应该显示之前和之后的所有更改,您可以选择保留什么。
C:\example>hg update
merging file.txt
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
C:\example>type file.txt
Line1
Line2
Line3
Line4
Line5