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 Hg更新到以前的提交删除任何更改_Mercurial - Fatal编程技术网

Mercurial Hg更新到以前的提交删除任何更改

Mercurial Hg更新到以前的提交删除任何更改,mercurial,Mercurial,做了一个 working directory 在里面复制了一些目录。。。更改了一些文件。做过 hg commit (resulted in rev3) 如何准确返回到rev3的状态hg update 3会将文件更改为rev3中的状态,但也会将所有复制的目录保留在其中。我想获得工作目录,但不包含复制的目录和文件,这些目录和文件是在rev3之后添加的。这对我来说是不可能的: hg add hg commit (resulted in rev4 - tip) 现在第一个first已经存在

做了一个

working directory
在里面复制了一些目录。。。更改了一些文件。做过

hg commit (resulted in rev3)

如何准确返回到rev3的状态
hg update 3
会将文件更改为rev3中的状态,但也会将所有复制的目录保留在其中。我想获得工作目录,但不包含复制的目录和文件,这些目录和文件是在rev3之后添加的。

这对我来说是不可能的:

hg add  
hg commit (resulted in rev4 - tip)  
现在第一个
first
已经存在,但是第二个
second
没有


您确定在提交之前已在新目录中添加了所有内容吗?

就像Jon所写的那样,Mercurial通常会在提交之后尝试清理。因此,当您
hg update
时,您应该准确地返回您所承诺的内容。我猜你看到的是以下行为:

> hg init
> mkdir first
> jed first/foo.txt
> hg add
   adding first/foo.txt
> hg commit -m asd
> mkdir second
> jed second/foo.txt
> hg add
   adding second/foo.txt
> hg commit -m asd
> hg update 0
因此,未跟踪的
dir/bar.o
文件已被保留,但跟踪的
dir/bar.c
文件已被正确删除。也就是说:Mercurial不会删除未跟踪的文件,因为它不知道这些文件是否包含有价值的数据。即使文件被
.hgignore
中的模式忽略,这也适用。如果目录只包含跟踪的
dir/bar.c
文件,那么当您更新到不需要该目录的修订版时,该目录将被完全删除


清理未跟踪文件的正常方法是使用。

可以是。。。不知道了,删除了。但很高兴知道这不是预期的行为,所以至少我会知道这是我的错误。。。刚刚试过你的例子,所以是的,这可能是一个错误的来源。
$ hg init repo
$ cd repo
$ echo "# some C program" > foo.c
$ hg add foo.c
$ hg commit -m first
$ mkdir dir
$ echo "$ other C program" > dir/bar.c
$ hg add dir/bar.c
$ hg commit -m second
$ echo "object file" > dir/bar.o
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ ls
foo.c  dir
$ ls dir
bar.o