避免将某些文件推送到公共存储库

时间:2014-11-05 20:04:31

标签: git

我见过这个问题 Can I add a file to my local Git repo but not push it to remote,但我有不同的情况。

我在Github有一个公共远程Repo(但可能是支持G​​it的任何东西,从Google Code到Visual Studio Online)。我有一些我不想与公众分享的文件,但我希望将它们放在我的本地存储库中。考虑证书,私钥,部署配置文件, et similia 。不过,它不是关于大小,而是关于秘密隐私

理想情况下,我在Git中有一个转换命令,使用带有规则a-la .gitignore的配置文件,init / push / pull到/来自转换后的存储库。

+----------+             +--------+
| internal |             | public |
+----------+             +--------+
      ^                       ^
      |                       |
 +--------+            +-------------+
 |  local |  ==(*)==>  | transformed |
 +--------+            +-------------+

我可以使用当前Git版本可以使用的技术:

  1. 忽略这些文件或将其移出本地回购
  2. 将此类文件限制在未发布的子树或模块中
  3. 服务器挂钩以跳过这些文件
  4. 选项1和3类似,我最终没有对文件进行版本控制。第二个是尴尬的,并在我的目录和文件上强加了一个人工结构,通常很难设置。

1 个答案:

答案 0 :(得分:0)

看看 git-filter-branch ,它可能是你感兴趣的东西。

它确实会创建一个额外的提交。

你需要对被重写的历史保持警惕。

参考:http://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#The-Nuclear-Option:-filter-branch

另一种方法可能是创建一个“推”分支,当你从开发分支重新定义push分支时,只需删除你不想暴露的文件(使用脚本或类似的东西)。

就我个人而言,我认为使用不同的分支进行推送会更容易维护。