我有这样的目录结构:
|-- 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机器。
答案 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 ;