【发布时间】:2014-08-30 05:41:26
【问题描述】:
我有 2 个分支,develop 和 master。 master 分支不应包含一些存储在名为 boilerplate 的目录中的开发文件和工具。到目前为止,一切都很好,因为我可以或多或少地管理分支之间.gitignore 文件中的以下差异。
开发
# Dev tools
/html
/boilerplate/node_modules
/boilerplate/bower_components
/assets/dist/main.min.css
/assets/dist/main.min.js
.....
主人
# Cleanup for live
/html
/boilerplate
/assets/dist/main.css
/assets/dist/main.js
.....
所以,在每个分支上的提交都可以!问题是当我从develop 合并到master,或者从master 分支开始选择git flow hotfix 时。
如果我从 develop 合并到 master,问题是在某些时候它会导致自动过程失败,我必须通过从 git 的索引中删除 boilerplate 文件夹来手动完成它,因为那是问题存在。所以我只做git rm -rf boilerplate/ 就完成了。这不是什么大问题。
但是,如果出于某种原因,我基于 master 手动或通过 git flow hotfix start XYZ 进程启动一个新分支只是为了一个修补程序,当更改合并到 @987654338 时,我的 boilerplate 目录将被遗忘@也一样。它中的所有内容都丢失了...空的,nada,什么都没有...因为在master 中被完全忽略了。
所以,如果可能的话,我正在寻找一种方法来避免这个问题。 develop 的样板文件保持原样(90% 未触及),并且在 master 上完全忽略,无论在分支上执行什么操作。反正我能做到吗?
【问题讨论】:
-
您没有说明为什么
/boilerplate在dev和master中有不同的模式。为什么不在所有分支中简单地使用模式/boilerplate/? -
因为这就是我需要它们的方式。如您所见,在
dev中,我省略了可能是第三方库的大型目录,这些目录不断变化,我不需要在git status中不断显示。如前所述,boilerplate包含开发过程所需的工具(如 grunt)。 -
这不是我要问的。请告诉我为什么模式必须不同。到目前为止,我不明白为什么您排除了
master中的所有内容,而只排除了dev中的一部分。在dev工作时,你需要在boilerplate/下面提交一些东西吗? -
dev 上的
boilerplate目录包含 Grunt 正在处理的资产。正如bower_components所示,有less、css、javascript等文件。而这些文件,在 master 上根本不需要,因为在 master 上我只需要编译所有需要的东西,准备好了(.min文件)。 -
为什么需要它们在版本控制下?
标签: git merge gitignore git-flow