0

我将从事基于相同样板 PHP 主题的两个项目(比如 projectA和 project )。B通常我必须对两者进行相同的更改,即使每个项目中的代码会略有不同。

例如,假设我添加了function_1()and function_2()A/index.php但我只想添加function_2to B/index.php。或者对于删除内容或进行更改也是如此。

对于重大更改,在文件之间来回粘贴将是低效的。

我假设这是更高级的 git 教程可能会提供帮助的那种东西?——或者也许有专门为此目的制作的工具?-- 我在哪里可以找到处理这类事情的文档。

4

2 回答 2

2

您真正应该做的是创建一个包含通用代码的“模板”分支/存储库。然后,您从该模板分支分支自定义存储库。当您对模板进行更改时,您可以将它们合并到自定义的存储库中。

现在,由于您已经拥有其他存储库,因此您必须捏造更改。基本上创建一个模板存储库,其中包含所有存储库已手动更新的非自定义更改。然后将自定义存储库作为远程添加到此模板存储库git remote add customized1 URL并签出相应的分支git checkout -t -b customized1-master customized1/master

然后从模板的母版“假”合并到每个自定义母版中:

for f in customized1 customized2; do
  git checkout $f-master
  git merge -s ours master
  git push $f $f-master:master
done

你当然可以在推送之前检查它做了什么。

此时,您已将模板分支作为相关祖先注入到您的自定义存储库/分支中。然后,您可以更改您的模板分支(在这个新仓库的示例中称为 master),并在提交后进行真正的合并:

for f in customized1 customized2; do
  git checkout $f-master
  git merge master
  git push $f $f-master:master
done

你几乎肯定想在这次推送之前检查发生了什么。现在,对模板的更改可以轻松地与所有自定义存储库共享。此外,如果您需要一个新的自定义 repo,您​​可以从模板分支分支它。

于 2012-07-19T00:36:31.663 回答
1

实际上有一个专门为此而设计的工具。如果您在项目之间共享代码,它们应该被视为您从中提取的库,并且应该有自己的开发分支/存储库。Git 包括向项目添加远程存储库并独立开发它们的能力。

您将需要 3 个存储库。存储库 A、存储库 B 和共享存储库 C。

共享的代码应位于存储库 C 中,存储库 A 和存储库 B 应将存储库 C 添加为远程存储库。这是有关远程存储库如何工作的指南,并且应该让您对如何设置此概念有一个很好的了解:http: //gitref.org/remotes/

干杯,快乐的编码!

于 2012-07-19T00:42:32.813 回答