如何使用git同步多个项目?

时间:2012-03-23 11:24:00

标签: git synchronization project-management

我有这样的目录结构:

|-- ROOT
    |-- Project1
    |   |-- application
    |   |-- img
    |   |-- js
    |   |-- css
    |   `-- system
    |
    |-- Project2
    |   |-- application
    |   |-- img
    |   |-- js
    |   |-- css
    |   `-- system
    |-- Project3
    ....

根文件夹包含x个项目:“Project1”,“Project2”,“Project3”等。

现在我想在“system”,“css”和“js”上使用git。 每个项目的这些文件夹应该相同。 那么如何用git同步所有项目?

我猜测要创建一个“主项目”并对其进行新的修改并将新版本提升到所有其他项目。但这是痛苦的** ..

我想要的是运行一些命令/批处理文件来同时进行同步。 例如,如果我有6个项目并且我在项目1中修改了某些内容,我怎样才能快速对所有项目进行修改(而不是将Project1推送到“Master”并将其拉5次)?

有可能吗?

只是为了记录我正在使用Windows机器。

上一个问题:Git between multiple projects

2 个答案:

答案 0 :(得分:5)

您仍然可能想要使用子模块。请参阅this page in the git book

使用子模块可以非常简单地处理您所讨论的更改类型。请参阅this answer的后半部分,其中总结了该过程。

我已经修改了我之前的答案,因为我可以看到,如果您需要将它们全部保留在一起,这对于多个项目来说可能会有点麻烦,因为更新主项目中的所有子模块提交引用将需要一些时间。根据之前的回答,我建议您编写此过程的脚本,如果这是您想要做的。

一旦项目成熟,它确实具有优势,但根据我的经验,经常发生所有项目无法立即更新。有时一个项目在一段时间内仍然需要旧版本。在这种情况下,您只需更新所需的项目以引用子模块中的新提交,然后在有时间时升级其他项目。

答案 1 :(得分:2)

对这些文件夹使用git submodule(如果主项目是一个不同的git项目)会稍微缓解一下,但不会省去你推动后拉动的麻烦。

编写一个bash脚本,对于作为git项目或子模块的每个文件夹来说,这应该是相当容易的。也许是这样的:

find -name css -type d -execdir git pull origin master ;