Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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迁移到Git并与自定义更改合并_Git_Merge_Mercurial_Nopcommerce - Fatal编程技术网

从Mercurial迁移到Git并与自定义更改合并

从Mercurial迁移到Git并与自定义更改合并,git,merge,mercurial,nopcommerce,Git,Merge,Mercurial,Nopcommerce,我在从Mercurial迁移到Git以及将nopCommerce的最新版本与我的更改合并时遇到了问题 这就是我所做的。我很久以前就破坏了nopCommerce mercurial存储库(我想是2.60版)。从那以后,我对这个平台做了很多更改,并将它们与nopCommerce的新版本合并。我做的最后一次合并是在3.10版上 现在我看到nopCommerce开始使用Git,所以我将mercurial存储库转换为Git(遵循以下指南:)。但是现在,当我拉动nopCommerce更改(版本3.50之前)

我在从Mercurial迁移到Git以及将nopCommerce的最新版本与我的更改合并时遇到了问题

这就是我所做的。我很久以前就破坏了nopCommerce mercurial存储库(我想是2.60版)。从那以后,我对这个平台做了很多更改,并将它们与nopCommerce的新版本合并。我做的最后一次合并是在3.10版上

现在我看到nopCommerce开始使用Git,所以我将mercurial存储库转换为Git(遵循以下指南:)。但是现在,当我拉动nopCommerce更改(版本3.50之前)时,我得到以下信息:“警告:没有常见的提交”,并且所有提交都被下载(不只是新的提交,从3.10到3.50),尽管我的存储库中已经有版本3.10之前的提交。基本上,版本3.10之前的nopCommerce提交是重复的。我认为会发生这种情况,因为它们有不同的提交编号(当我将mercurial存储库转换为Git时,提交得到了不同的提交编号,并且我看到新的nopCommerce Git存储库也有不同于旧mercurial存储库的提交编号)

问题是,当我将nopCommerce v3.50与我所做的更改合并并试图解决冲突时,基文件是空的,因为Git看不到它们有一个共同的祖先。本地文件将来自my repository的提交作为祖先,远程文件将来自新Git repository的提交作为祖先


你知道如何解决这个问题吗

关于问题的根源,你可能猜对了。Git看到了两个完全不同的历史,不知道如何处理它们。您可以使用以下方法解决此问题:

  • 在您的历史记录和他们的历史记录之间查找最新的共同祖先(=在两个历史记录中都有副本的最新提交)。注意这些提交的SHA
  • 运行
    git replace**sha在您的历史记录中****sha在他们的历史记录中**
查看新的
git日志
,看看结果是否符合您的喜好。如果是,您可以通过运行以下命令使更改永久化:

git filter-branch --tag-name-filter cat -- --all
git replace -d **sha-in-your-history**
之后,您可能希望克隆repo并删除上一个副本,以便从磁盘中实际删除“您的”历史记录副本