我正在尝试使用Git为我的个人项目创建工作流程。阅读本帖后A successful Git branching model,我计划在所有项目中实施相同的内容。 master
分支将包含生产代码和develop
分支,我将其用作工作分支。
请考虑以下目录结构。
bower_components
node_modules
dist
gulpfile.js
index.php
assets
-css
-js
-images
package.json
bower.json
.gitignore
README.md
显然,我不希望将bower_components
和node_modules
推送到我的develop
和master
分支,因此我将其添加到{{1 }}。因此,其他开发人员可以签出开发分支并运行.gitignore
和npm install
以继续开发。
我希望将bower install
分支保持在我不需要master(release)
,package.json
,gulpfile.js
等的地方。
因此主分支必须只包含以下指令
bower.json
dist
index.php
将缩小为dist
和js
。我想使用css
实现上述方案。对于master分支我需要不同的Git
,并在git merge期间开发分支或忽略文件。
我已阅读了几个SO问题,请查看此question,其中介绍了使用.gitignore
选项忽略分支文件的方法。我试过了,但它似乎没有起作用。这是上述解决方案的link。这个SO答案解释了
Git不支持每个分支排除文件
如何使用Git实现上述场景?我应该使用哪个选项?
答案 0 :(得分:1)
如果将.gitignore
添加到存储库,则可以在不同的分支中使用不同的版本。但是你不能合并分支,否则变化将转移到另一个分支。
但是,您可以简单地忽略这些文件,并将忽略的文件添加到存储库中。您只需运行git add --force
即可添加文件,即使这些文件被忽略也是如此。请注意,这将无法帮助您确定忽略文件夹中是否有新文件;你必须自己手动添加,Git将无法告诉你有新文件。
否则,这根本不可能,我认为你不应该在存储库中有像缩小的CSS这样的东西。可以从源生成的所有内容都不应该是存储库的一部分。
答案 1 :(得分:0)
我强烈建议将文件bower.json
和collapsingToolbarLayout
放入主版本分支。部署和持续集成系统将需要它们。任何分支主分支的人都需要它们。
答案 2 :(得分:0)
正如一些评论已经提出的那样,我认为你误解了主分支的目的,它是一个稳定版本的源代码,而不是你的稳定代码的“编译”版本。另外,在git下跟踪这些“编译”文件并不是一个好主意。
自动化部署过程更容易,它将完成准备部署代码所需的所有任务,包括清除不需要的文件。通过这种方式,您可以忘记忘记擦除“编译”所需的一些文件。还要记住git它没有为最终用户的ditribution做好准备。