我有一个回购test-repo
,它包含两个分支master
和dev
。 master
分支的.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
分支中的目录始终位于该本地目录中,无论如何。你现在看到我的问题吗?
答案 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
。