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