我正面临一个难以找到解决方案的问题:
我有一个大的git repo,其中包含我已经构建的软件。我在一些服务器上安装了这个repo。该软件根据项目/服务器进行定制。问题是,我认为只是因为我已经改变了一些文件,所以推动远程所有软件的空间。我想有一个主要的回购,我在服务器中安装的基本软件和另一个回购中的自定义东西,最好的方法是什么?
我尝试使用相同的仓库,根据项目更改分支,但有时当我想要更改某些项目时,我会搞乱一切。
我尝试的另一件事是从我的服务器中删除.git并启动一个新的repo并只添加我已更改的文件,问题是,repo中没有包含这么多文件,有时很难知道哪些我已经改变了哪些文件以及哪些文件只是主要的回购
有最好的做法吗?
非常感谢!!
答案 0 :(得分:0)
在阅读完问题之后,我的第一反应就是说:它不是一个git问题,它是一个项目管理问题。
我的意思是每种语言或框架都允许您创建某种类型的库,您可以在各种项目中重复使用。
在不同文件夹中分隔出具体的内容。
然后,为公共代码和每个项目的git存储库创建一个git存储库(其中包含项目/客户端/服务器名称)。
如果需要,使用git submodules将commmon代码作为项目的子文件夹导入。
如果由于某种原因,您无法将公共代码与特定代码分开,那么您将无法使用现有项目的分支或分支。
在这种情况下,我的解决方案是为公共代码和每个项目的存储库提供一个git存储库。
项目存储库应该从公共代码分叉。 在项目存储库中,您应该提交本地修改。 当您需要从公共项目导入更改时,使用rebase而不是merge进行更改。 这将在新版本的公共代码之上应用您的本地修改。
这是将一组补丁保存在另一个项目之上的简单方法。
当然,要使用只有一个分支的rebase解决方案,你需要使用" force push" (因为历史发生了变化)。为避免这种情况,您可以在每次进行rebase时创建一个新分支;把它想象成一个新的项目版本。