我的目录结构如下:
|-- 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机器上工作。
发布于 2012-03-23 19:28:26
您可能仍然希望使用子模块。参见this page in the git book。
使用子模块可以非常直接地处理您正在讨论的更改类型。请参阅this answer的后半部分,它很好地总结了这个过程。
我已经修改了我之前的答案,因为我可以看到,如果你需要保持所有项目的步调一致,这对于多个项目来说可能有点痛苦,因为更新主项目中的所有子模块提交引用将需要一些时间。根据前面的回答,如果这是您想要做的,我建议您编写此流程的脚本。
一旦项目成熟,它确实有优势,然而,根据我的经验,经常会发生所有项目都不能一次更新的情况。有时一个项目在一段时间内仍然需要一个较旧的版本。在这种情况下,您可以只更新所需的项目以引用子模块中的新提交,然后在以后有时间时升级其他项目。
发布于 2012-03-23 19:29:35
对这些文件夹使用git submodule (如果主项目是一个不同的git项目)会让它变得简单一些,但不会省去你在推送后拉取的麻烦。
为每个文件夹编写一个bash脚本应该是相当容易的,无论是git项目还是子模块。可能是这样的:
find -name css -type d -execdir git pull origin master ;
https://stackoverflow.com/questions/9838355
复制相似问题