我认为这是一个非常简单的任务,但我找不到一个合理的解决方案。假设我在项目中有一个名为“source”的目录,其中包含所有源文件。在开发模式下,我更改源文件,Gulp会将它们压缩成
现在,我有两个分支:
我想获得的行为是:1)在开发过程中忽略minified文件(它们每次更改代码时都会被组合和缩小),但保留源文件;2)在生产环境中忽略源文件(因为我不希望当我将其
.min.js
和 .min.css
,并将它们放入public
目录中(澄清一下,我正在构建一个node.js应用程序)。现在,我有两个分支:
master
用于生产环境,development
用于开发。
master
分支上的.gitignore文件
.DS_Store
node_modules
source
...
开发分支下的.gitignore文件
.DS_Store
node_modules
public/javascript
public/stylesheets
...
我想获得的行为是:1)在开发过程中忽略minified文件(它们每次更改代码时都会被组合和缩小),但保留源文件;2)在生产环境中忽略源文件(因为我不希望当我将其
$ git pull
到生产环境时有这些源文件),但保留被缩小的文件。
由于某种原因,当我在master
和development
之间切换时,git会完全删除一些文件并破坏一切。例如,它会清除node_modules
中每个模块的所有内容,迫使我每次切换分支都要执行$ rm -rf node_modules && npm install
。
非常感谢任何帮助。
该问题在此处也有描述:Using git, how do I ignore a file in one branch but have it committed in another branch?,但没有工作解决方案。
development
分支,所有开发都在这里进行,还应该有一个production
分支,即开发过程的“精华”,应该按原样部署。然而,最好的方法似乎是将此production
分支作为代码的最后一个稳定版本,在推送到服务器执行并进行此make install
编译,可能作为后合并钩子。 - Anton Egorov