Git,忽略的文件出现在每个分支中

时间:2014-06-07 19:10:56

标签: git github

我有一个回购test-repo,它包含两个分支masterdevmaster分支的.gitignore文件中的任何文件/目录在我git checkout时都出现在两个分支中,我认为这是正常行为,因为这些文件没有被跟踪Git所以他们只是在test-repo目录中,无论如何。我不希望这种情况发生。我理想的设置如下:

当我git checkout master时,本地文件/目录结构应如此:

test-repo/
  .gitignore (this file just contains `should-be-ignored.md`)
  should-be-ignored.md
  should-only-show-in-master.md

当我git checkout dev时,本地文件/目录结构应如此:

test-repo/
  should-only-show-in-dev.md

如果有人知道如何实现这种设置,我真的很感激。

真实版本:我正在使用GitHub,当你添加gh-pages的分支时,它本质上充当了免费的静态网络托管。我有一个包含我的前端Web构建样板的repo,master分支包含所有代码,gh-pages分支将包含代码执行的一些示例等。当我正在处理时本地的样板我运行Grunt(一个任务运行器)运行正常需要安装任何依赖项的命令npm install,这会在repo的根目录中创建一个node_modules目录,我不希望这样要显示在远程仓库上,我将该目录放在.gitignore文件中。所以在我的dev分支(本地)中,这个目录仍然显示,如果我想为dev分支中的文件分别执行Grunt任务,该怎么办?这意味着我需要在该分支中使用另一个node_modules目录,这是无法完成的,因为master分支中的目录始终位于该本地目录中,无论如何。你现在看到我的问题吗?

2 个答案:

答案 0 :(得分:5)

使用你提供的关于gh-pages的附加上下文(我觉得我对主人和开发分支有点困惑):

gh-pages分支本质上是一个单独的repo,用于不同的目的(通常是文档。)

我通常做的是不通过代码分支和gh-pages分支检查。我只是克隆了两次repo,有一个用于正常开发,另一个用于gh-pages的东西。保持简单,这两个被视为两个回购,因为它们应该是。

答案 1 :(得分:-2)

首先备份相关文件并从test-repo目录中删除它们。

在分支master上,添加文件should-only-show-in-master.md并提交。切换到分支dev删除should-only-show-in-master.md,添加should-only-show-in-dev.md并提交。

将文件should-be-ignored.md添加到.gitignore分支中的master