我将处理两个基于相同样板PHP主题的项目(比如项目A
和项目B
)。通常情况下,我必须对两者进行相同的更改,即使每个项目中的代码略有不同。
例如,假设我已将function_1()
和function_2()
添加到A/index.php
,但我想仅将function_2
添加到{{} 1}}。或者删除内容或进行更改也是如此。
对于重大更改,在文件之间来回粘贴是低效的。
我假设这是一个更高级的git教程可能有帮助的东西? - 或者是否有专门为此目的而制作的工具? - 我在哪里可以找到有关处理此类事情的文档。
答案 0 :(得分:2)
你真正应该做的是创建一个包含公共代码的“模板”分支/ repo。然后,您从该模板分支分支自定义的repos。当您对模板进行更改时,可以将它们合并到自定义的存储库中。
现在,由于您已经存在其他存储库,因此您必须捏造更改。基本上创建一个模板仓库,其中包含已自动更新所有仓库的非自定义更改。然后将自定义的repos作为遥控器添加到此模板repo 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
你当然可以在推进之前检查它是做了什么。
此时,您已将模板分支作为相关祖先注入到自定义的存储库/分支中。然后,您可以对模板分支进行更改(在此新repo中我的示例中称为master),并在提交后进行真正的合并:
for f in customized1 customized2; do
git checkout $f-master
git merge master
git push $f $f-master:master
done
你几乎肯定想要在你推动这段时间之前检查一下发生了什么。现在,可以轻松地与所有自定义存储库共享对模板的更改。此外,如果您需要新的自定义仓库,可以从模板分支进行分支。
答案 1 :(得分:1)
实际上有一个专门为此制作的工具。如果要在项目之间共享代码,则应将它们视为您要从中提取的库,并且应具有自己的开发分支/存储库。 Git包括将远程存储库添加到项目并独立开发的能力。
您需要3个存储库。存储库A,存储库B和共享存储库C。
共享的代码应该在Repository C中,Repository A和Repository B应该将Repository C添加为远程存储库。以下是有关远程存储库如何工作的指南,应该让您对如何设置此概念有所了解:http://gitref.org/remotes/
干杯,快乐的编码!