gpt4 book ai didi

git - 从 Mercurial 迁移到 Git 并与自定义更改 merge

转载 作者:太空狗 更新时间:2023-10-29 14:45:56 26 4
gpt4 key购买 nike

我在从 Mercurial 迁移到 Git 并将最新版本的 nopCommerce 与我的更改 merge 时遇到问题。

这是我做的。我很久以前就克隆了 nopCommerce mercurial 存储库(我认为是 2.60 版)。从那时起,我对该平台进行了许多更改,并将它们与更新版本的 nopCommerce merge 。我最后一次 merge 是在版本 3.10 上进行的。

现在我看到 nopCommerce 开始使用 Git,所以我将我的 mercurial 存储库转换为 Git(遵循本指南:http://arr.gr/blog/2011/10/bitbucket-converting-hg-repositories-to-git/)。但是现在,当我提取 nopCommerce 更改(最高版本 3.50)时,我得到以下信息:“警告:没有常见的提交”,并且所有提交都被下载(不仅仅是新的,从 3.10 到 3.50),虽然我我的存储库中已经有 3.10 版的提交。基本上,直到 3.10 版的 nopCommerce 提交都是重复的。我认为会发生这种情况,因为它们有不同的提交编号(当我将我的 mercurial 存储库转换为 Git 时,提交有不同的提交编号,而且我看到新的 nopCommerce Git 存储库也有与旧的 Mercurial 存储库不同的提交编号)。

问题是,当我将 nopCommerce v3.50 与我所做的更改 merge 并尝试解决冲突时,BASE 文件是空的,因为 Git 看不到它们有共同的祖先。 LOCAL 文件将我的存储库中的提交作为祖先,而 REMOTE 文件将新 Git 存储库中的提交作为祖先。

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

最佳答案

您可能猜对了问题的根源。 Git 看到两个完全独立的历史记录,不知道如何处理它们。您可以使用 git replace 解决此问题:

  • 找到你和他们的历史之间最近的共同祖先(=在两个历史中都有副本的最新提交)。注意这些提交的 shas。
  • 运行 git replace **sha-in-your-history** **sha-in-theirs**

查看新的 git log 并查看结果是否符合您的喜好。如果是,您可以通过运行以下命令使更改永久生效:

git filter-branch --tag-name-filter cat -- --all
git replace -d **sha-in-your-history**

之后,您可能想要克隆存储库并删除之前的副本,以实际从磁盘中删除“您的”历史副本。

关于git - 从 Mercurial 迁移到 Git 并与自定义更改 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27413733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com