代码之家  ›  专栏  ›  技术社区  ›  Alan

修补第三方软件包的标准程序是什么,同时还能进一步合并更新?

  •  0
  • Alan  · 技术社区  · 6 年前

    我只知道git的基本知识,所以我不确定如何做到这一点,或者是否有更好/更简单的方法。假设a有一个来自NPM的第三方软件包,我需要修改它以添加一个特性/补丁等,但是进一步来说,这个软件包的贡献者发布了一个更新。如何使用最新版本或特定文件更新包,同时合并已有的更改?

    目前,我重命名了模块,下载了新的包,并手动复制/粘贴代码,但这是非常容易出错和费力。

    1 回复  |  直到 6 年前
        1
  •  1
  •   phd    6 年前

    好吧,标准程序 git npm 模块,将其克隆到本地repo,创建一个单独的分支,并用所做的更改对其进行修补。每次你找到 npm公司 模块的存储库已更改。请更新本地存储库中的主分支:

    git fetch origin master:master
    

    git merge master  # to the current branch
    

    或者您可以选择“重基”而不是“合并”

    git rebase master  # rebase the current branch on top of master
    

    验证是否正确应用了修补程序:

    git diff master  # compare the branch with master
    

    在合并和重基方案中,如果上游在应用更改的相同位置更改了代码,则可能会发生冲突。这是没有办法的,您将不得不手动修复这些冲突。不管怎样,这比每次复制和修补要省力得多。

    如果 npm公司 吉特 repo,获取模块的代码并将其提交到repoin分支 master . 用你的补丁创建一个分支。每次发现上游代码被更改时,就下载代码并进行更新 主人 :

    git checkout master
    # Update code
    git add -A .
    git commit
    git checkout your-patched-branched
    git merge master  # or rebase