git - 当 git 存储库有多个远程仓库时,如何保护提交者的身份?

标签 git github

我们公司有一个项目想要作为开源发布。该存储库在内部托管,它包含历史记录,其中包括我们团队的姓名和电子邮件。

开源项目将托管在外部存储库 Github 上。为了便于说明,我们假设团队成员是 Alice、Bob 和 Charlie,公司名称是 ACME。

是否可以利用 git 来完成以下任务:

  1. 继续以 Alice 等人的身份做出 promise ,并在我们的内部存储库中保持完全透明
  2. 将代码发布到公共(public)存储库时,提交应压缩为一个,就好像它们是由名为 ACME 的用户(而不是 Alice等)
  3. 团队成员之一Bob将充当内部和外部存储库之间的桥梁。他的职责是作为 Bob 在内部工作,并偶尔将累积的团队提交推送到远程存储库,作为 ACME

主要思想是隐瞒同事的身份,保护他们的隐私。外部存储库允许其他人为项目做出贡献,而不让他们进入我们的基础设施。

全世界应该看到该公司所做的所有工作都是由 ACME 完成的,而无法查看代码开源发布之前的历史。

如何实现这一点,或者我们可以考虑哪些替代方案?

最佳答案

提交(或者 Git 中的任何对象)的身份是其内容的加密校验和。提交的内容包括作者和提交者的姓名和电子邮件地址。如果您进行的另一次提交与具有未模糊的名称和/或电子邮件地址的提交完全相同,但名称和/或电子邮件地址被模糊,则该其他提交是不同的提交.

结果是您拥有两个完全不同且不混溶的存储库。这是维护的噩梦。 可以做到,但绝对不值得这样做。

关于git - 当 git 存储库有多个远程仓库时,如何保护提交者的身份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54960376/

相关文章:

Git 交互式 rebase 重写提交

git - Git 如何既节省空间又快速?

github - 设置两因素身份验证后,我得到 "Repository not found"

git - 如何控制提交 Hook 自动推送到 git 目标 repo 的文件的所有权?

svn - 在 SVN 中,您可以 checkout (以阻止其他人),您可以在 GIT 中执行此操作吗?

git - 当我可能在子目录中时如何找到本地git存储库的路径

git - 推送除特定分支之外的所有分支

github - 允许读者通过反馈注释我的要点

git - 在 `git filter-branch` : Updates were rejected because the tip of your current branch is behind 之后无法推送到 Heroku

ruby-on-rails - 为什么我必须将我的私钥上传到我的服务器才能让 Capistrano 与 GitHub 一起工作?