git:忽略生产分支中的源和开发中的缩小文件

时间:2016-04-16 09:15:58

标签: git version-control version

我无法找到合理的解决方案,因为我认为这是一个非常简单的任务。考虑我的项目中有一些source目录,其中包含所有源文件。在开发模式下,我更改源文件,Gulp将它们缩小为.min.js.min.css并将它们放入public目录(澄清一下,我正在构建一个node.js应用程序)。

现在,我有两个分支:master用于生产,development用于开发。

master分支上的

.gitignore文件
.DS_Store
node_modules
source
...
development分支

上的

.gitignore文件
.DS_Store
node_modules
public/javascript
public/stylesheets
...

我想要获得的行为:1)忽略缩小的文件以进行开发(每次我更改代码时它们都会被组合和缩小),但保留源代码; 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?,但没有可行的解决方案。

2 个答案:

答案 0 :(得分:4)

我觉得你问的是错误的问题。缩小的脚本是“构建产品”,而不是“源代码”。在我看来,某种“make install”过程应该创建它们,而不是让它们在源代码控制中。但我不在网络空间工作,所以我不知道标准做法是什么。

答案 1 :(得分:3)

一种解决方案是避免在分支之间来回切换(避免"打破一切"部分)

从您当前签出的master的仓库中,执行(使用git 2.5+)a:

git worktree add ..\dev dev

使用新的git worktree command,您将获得第二个工作树,链接到您的克隆(仅一次)回购。 请参阅" Multiple working directories with Git?"。

在两个工作树(每个分支一个)中,您可以根据需要维护.gitignore