我创建了一个存储库并对文件进行了一些更改。然后我就 promise 并继续工作。经过一些改变,我再次做出了 promise 。 我必须回到第一个版本,所以我这样做了:
hg up 5f01300
第一个版本的文件又回来了。
我做了一些更改并再次提交。
hg commit -m 'Updated'
创建了一个新头,然后我尝试了:
hg push
Mercurial 表示存在“未提交的未提交”内容。
我尝试再次提交:
hg commit -m 'Changes accepted'
然后我输入:
hg merge
所以出现了很多错误,因为有两个头,而且我无法 merge 它们。
有时我尝试像上面那样进行 merge ,并且效果很好。通常,当我第二次尝试重复该过程时,它会中断并且我无法 merge 任何内容。
有人可以教如何正确 merge 吗?
[一些错误]
通常,在第二次时,会发生以下情况:
int main(int argc, char **argv)
{
printf("hello, world!\n");
<<<<<<< local
printf("sure am glad I'm not using CVS!\n");
=======
printf("sure am glad I'm using Mercurial!\n");
>>>>>>> other
return 0;
}
我必须做:
hg resolve -m hello.c
最佳答案
merge 是 merge 不同版本文件的方式。每当您以两种不同的方式更改文件时,Mercurial 都会在您运行 hg merge
时尝试 merge 它。
当文件的更改不重叠时,Mercurial 可以自动进行 merge 。但是,如果您以两种不同的方式更改同一行,那么您需要帮助 Mercurial merge 这两个编辑。
考虑一个在第一个版本中以 hello, world!
开头的文件,然后在第二个版本中更改为 sure am happy I'm not using CVS!
:
"hello, world" --- "sure am glad I'm not using CVS!"
您现在更新回第一个版本并对文本进行不同的更改:
"hello, world" --- "sure am glad I'm not using CVS!"
\
\
\
"sure am glad I'm using Mercurial!"
您现在有一个不同历史记录,当您hg merge
时,Mercurial会告诉您它在文件中检测到冲突。 Mercurial 将搜索 merge tool如果它在您的系统上找不到任何内容,它将转储文件中冲突的更改。该文件如下所示:
<<<<<<< local
sure am glad I'm not using CVS!
=======
sure am glad I'm using Mercurial!
>>>>>>> other
您看到的标记称为 merge 标记,它们向您显示文件中无法自动 merge 的区域。标有 local
的顶部区域是您在输入 hg merge
之前工作副本中的版本。标记为 other
的底部区域是您 merge 的分支上的版本。
Mercurial 知道该文件未解析,您可以使用 hg resolve --list
进行查看。现在,您编辑该文件以某种方式组合两个版本。这是一种组合:
sure am glad I'm using Mercurial and not CVS!
我删除了 merge 标记并留下了我喜欢的版本。现在,您将文件标记为已解决并提交 merge :
$ hg resolve --mark hello.c
$ hg commit
希望对您有所帮助!
另一条评论:你写
[...] I tried:
hg push
. Mercurial said there were "outstanding uncommitted" stuffs.
当您尝试插入时,Mercurial 从不谈论未提交的更改。推和拉与您的工作副本(未提交的更改所在的位置)无关。因此,使用脏工作副本进行推拉是可以的。您想到的错误可能是
$ hg merge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg merge
abort: outstanding uncommitted merges
也就是说,在提交或中止当前 merge 之前,您无法启动新的 merge 。
关于macos - 如何与 Mercurial merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19918353/