【问题标题】:How can I merge code in a zip file from an old version of a repository with the latest version?如何将旧版本存储库中的 zip 文件中的代码与最新版本合并?
【发布时间】:2020-04-18 02:01:19
【问题描述】:

我对 git 还很陌生,只知道基础知识。我试图找到这方面的信息,但也许我无法用搜索词表达我需要做的事情。

我的公司聘请了一位第三方开发人员,该开发人员从已知存储库中获取代码并进行了更改。不幸的是,他们没有用 cmets 记录他们的任何更改。 我们得到了一个 zip 文件,只是粗略地假设了最初克隆代码的版本。 但是,我们需要保留他们的更改并更新到实时存储库中的最新版本。 用 git 处理这个问题的最佳方法是什么? zip 文件仅包含来自 repo 的文件,没有 git 版本控制历史记录。

有人可以就如何确保我们使用最新的代码而不会丢失他们的更改提供建议吗?

【问题讨论】:

    标签: git github


    【解决方案1】:

    我认为其他答案并没有真正从根本上解决问题:找到 zip 开发开始的修订版。在该修订中创建一个分支并检查它。然后从你的工作树中删除所有内容(不要弄乱 .git 目录,以防万一),用 zip 替换内容,git 添加所有内容并创建一个新修订......类似于git commit -m "the zip"。现在您可以转到任何分支并合并您为此创建的分支.....或重新设置它,无论您需要什么。

    【讨论】:

    • 根据此处的信息,我只需在实时存储库上运行git clone,然后分支最接近时间段的修订,就能够成功实现所需的功能。然后我创建了另一个分支并按照您的建议进行操作,确保 zip 内容就是一切。将 git merge 运行到第一个分支并手动调整冲突。然后将 master 分支到“working”并合并到其中。
    【解决方案2】:

    这是完全可以做到的。

    您可以根据您认为代码开始的位置创建一个分支(称为import)。您可以将内容解压缩到工作树中,覆盖所有文件并提交。现在您可以使用git diff HEAD^ 查看原始版本和更改之间的差异。

    当您想要合并这些更改时,您可以切换到master,运行git merge import,然后解决任何冲突。

    如果你认为你在它的基础上犯了一个错误,你可以使用当前内容创建一个临时分支 (git branch temp import),查看 import,将其重新定位到新的提交 (@987654327 @),然后将分支重置为其原始值 (git reset --hard temp)。这提供了一种快速简便的方法来找到正确的父级,以便您的合并产生最佳结果。

    一般来说,您确实希望尽可能地找到原始提交所基于的提交,因为合并的工作方式是它合并了两个分支上发生的更改。知道哪些更改当然取决于找到合并基础,在这种情况下,合并基础是 masterimport 共同共享的最后一次提交(分叉点)。

    【讨论】:

      【解决方案3】:

      是的,当然。实际上,这说起来容易做起来难,但是一旦您按照这些步骤进行操作,就可以保证成功。你不会享受过程,但你会享受结果。

      • 为您的项目文件夹创建一个备份,以确保您不会丢失未版本控制的内容
      • 查看您拥有的最新版本
      • 创建一个名为 big-merge 的分支
      • 结帐大合并
      • git push -u origin big-merge
      • 解压缩其他开发人员的工作
      • 将解压后的内容复制到您的项目文件夹中
      • git 提交
      • git 显示
      • 别担心,这只是一个分支中的评论,你甚至没有推送
      • 现在,当您检查 git show 向您抛出的内容时,请确保您喝了一些咖啡和茶。你需要一个rubber duck

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-18
        • 1970-01-01
        • 2020-08-15
        • 2022-12-22
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多