我可以把Git用来为定制软件应用更新补丁吗?

5
在我的一个网站上,我安装了论坛软件(PunBB)。由于该软件没有提供任何钩子或过滤器,因此我随着时间的推移添加了对核心的定制。这意味着更新到新版本变得越来越困难,因为我必须手动完成所有操作。
我以前从未使用过Git,但我已经了解了它。大多数用例都是从干净的代码库开始,使用Git来跟踪更改,但我必须从已经进行了广泛更改的代码开始,并向其中添加补丁。我一直没有找到在我的情况下使用Git的方法,我真的很想知道是否可以做到。
1个回答

5

是的,你可以且应该这样做。

  • 从源代码库克隆原始库(在你的情况下,git clone https://github.com/punbb/punbb
  • 从上游主分支开始创建本地分支。
  • 创建上游主分支和你的自定义副本之间的差异,并将其提交到你的分支中。
  • 继续在本地分支中提交你的自定义内容,并不时从上游主分支合并(或有时仅挑选特定的提交)。
  • 考虑回馈一些你的工作 - 这将使合并变得更加容易。

编辑: 根据您的请求扩展了第三步:

  1. After cloning upstream repository, create your local development branch (say, mybranch) based on upstream master currrent state:

    git branch mybranch origin/master
    git checkout mybranch
    
  2. Edit files in this branch to reflect your local patches. However, you want this difference to be as small as possible - don't just blindly replace all files, spend some time thinking if you can stay closer to upstream.

  3. Commit this difference into your mybranch.

  4. From time to time, fetch new commits to master from upstream:

    git fetch origin
    

    and merge those changes into your mybranch (assuming that you are on it, if not, checkout to mybranch it first):

    git merge origin/master
    

我已经有一段时间没有处理这个了,但是我在你的第三步遇到了麻烦。我应该把两组文件(punBB主版本和我的定制版本)放在哪里来创建差异?我尝试创建一个新分支,然后用我的代码覆盖主文件以合并两个版本,但最终两个分支中的文件完全相同。我应该将它们保留在不同的目录中吗?但是那么如何合并它们呢? - ArchCarrier
你能给我一点提示怎么做吗? - ArchCarrier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接