使用git,如何忽略一个分支中的文件,而在另一个分支中提交它?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

下面是我想做的一个例子...

$ git init git-ignore-test
$ cd git-ignore-test
$ echo "*.ignored" >> .gitignore
$ git add .gitignore && git commit -m "Ignore .ignored files"
$ touch Foo.ignored

在这里,foo.creted在我的主分支中被忽略了,但是它仍然存在,所以我的项目可以使用它。

$ git checkout -b unignored
$ cat /dev/null > .gitignore
$ git add Foo.ignored .gitignore && git commit -m "Unignore .ignored files"

现在,我有一个分支,这些文件已提交,如我所愿。但是,当我切换回我的主分支时,Foo.NOTIGHT就消失了。

有谁有更好的方法来安排这件事吗?

为了澄清,我希望mp3文件存在于两个分支中,这样当我在本地运行站点(使用任何一个分支)时,站点就可以工作。我只想在一个分支中忽略文件,所以当我推到GitHub时,它们也不会被推送。通常.gitignore可以很好地处理这类事情(即保存一个没有包含在推到远程中的文件的本地副本),但是当我切换到具有签入文件的分支,然后返回到忽略文件的分支时,文件就会消失。

提问于
用户回答回答于

$ git branch public_viewing
$ cd .git/
$ touch info/exclude_from_public_viewing
$ echo "path/to/secret/file" > info/exclude_from_public_viewing 

然后在.git/config文件中添加以下行:

[core]
excludesfile = +info/exclude


[branch "public_viewing"]
excludesfile = +info/exclude_from_public_viewing

现在,所有的全局忽略信息都在info/exclude文件中,并且分支特定于info/exclude_from_public_viewing

用户回答回答于

我强烈建议考虑把那些MP3文件放在S3上。让他们成为你的Heroku推动的一部分(因此也是你的Heroku鼻涕虫的一部分)将大大减慢你的启动时间。由于Heroku使用EC2,如果文件位于S3上,并且仅由应用程序访问(如果用户没有直接链接到S3),你甚至不会支付任何带宽费用,只需存储50 MB的费用。

扫码关注云+社区