假设我有一个位于公共开放源代码回购和私人开发回购的项目。发展回购的一些文件将包括像数据库密码的东西,并且我不想公开。在两个遥控器之间共享安全文件的最佳方式是什么?我在想某种只适用于公共回购的.gitignore文件,这可能吗?如果没有,还有其他建议吗?选择性的git忽略远程?
回答
请勿将密码放在源代码管理期间。他们到处只是.gitignore
;通过其他方式分发私人密码文件。
(没有,没有只在某些仓库忽略文件的方式。)
这没有帮助。我们需要在repo中部署配置,以便我们可以根据需要更改它们,并且每个人都会知道,而且我们的生产环境也是基于git的,因此需要部署的所有文件都需要在私人仓库中提供。没有理由这样的私人数据不应该在私人信息源控制。 – 2011-06-14 04:31:21
@Stephen:问题在于,由于Git的运作方式,如果您甚至更改了单个文件,您将拥有完全不同的提交散列集合,从而形成完全不同的历史记录。 Git不会在历史级别上区分公共存储库和私人存储库。 – Amber 2011-06-14 04:33:57
@Stephen:你可以做的是保持一个单独的分支,它有一个提交添加到你的私人文件中,并且永远不会将该分支发布到公共存储库。当更新开源部分时,您可以将其合并到'私人'分支中,私有文件将被保留。 – Amber 2011-06-14 04:34:51
可能把更多的敏感文件在不同的回购,在回购原其子模块,让您只私人开发商访问私人回购。
如果确实存在文件,为了安全起见,这些文件不应泄露给公众,请勿将它们放入存储库或使用密码加密文件!
最好的是,当你把非共享文件在一个单独的存储库可以住私人开发版本中:
BASE_DIR/.git
BASE_DIR/private/.git
这里BASE_DIR包含了所有公共文件。 BASE_DIR/private包含私有文件。
当你刚刚发布的数据,而不是存储库(及其所有历史记录),你可以简单地
git --work-tree=PATH_TO_THE_PUBLIC checkout HEAD -- .
在新版本到来。
- 1. git忽略远程文件
- 2. 基于远程的git忽略文件?
- 3. git知道,但(远程)svn忽略
- 4. git的清洁选择忽略模式
- 5. 忽略属性选择中的ID
- 6. 选择性忽略NUnit测试
- 7. 忽略terraform远程状态
- 8. Git忽略并且不跟踪合并的远程文件
- 9. Git diff忽略
- 10. Git忽略gitconfig?
- 11. Xcode .git忽略
- 12. Powershell选择忽略列
- 13. EF忽略了选择
- 14. 在SQL选择忽略列
- 15. IE7忽略:非选择器
- 16. Paper.js忽略图像选择
- 17. git可以永久忽略远程分支吗?
- 18. 如何在GIT推送期间忽略远程更改?
- 19. Git忽略目录而不对远程进行更改
- 20. Automapper忽略属性忽略
- 21. git push忽略cocoapods
- 22. Git忽略只推
- 23. 忽略Git提交
- 24. 忽略git合并
- 25. Unity Git - 忽略库
- 26. 忽略在Git中
- 27. 忽略使用Git
- 28. 忽略git目录
- 29. Git有选择地忽略尽管gitignore文件
- 30. git樱桃选择和忽略EOL变化合并
这通常使用过滤器驱动程序来处理,如http://stackoverflow.com/questions/3318043/mark-a-file-in-the-git-repo-as-temporarily_ignored/3318202#3318202 – VonC 2011-06-14 04:53:06