我应该伪造我自己的 GitHub 存储库还是使用分支?

Should I pseudo-fork my own GitHub repository or use branches?

我编写了一些脚本来计算大量数据和 return 一些统计值,这些值用于我几个月前到期的作业。

现在我想与几个人合作扩展这个项目。我的理解是我应该为那个项目创建一个分支。我不认为为此创建一个额外的组织是合适的,因为团队是临时的并且只在这个单一项目上工作,至少现在是这样。

How do you fork your own repository on GitHub? and Can/should I fork my own github repo? 中所述,您不能在 GitHub 上创建自己的存储库的分支。我尝试使用建议的克隆和推送到新存储库的解决方法,效果相当好。我真的不介意我不能跨项目 PR,但这种方法对我来说的问题是所有提交都在我的个人资料中被重复计算为 activity。

我就此联系了 GitHub 支持,并询问他们是否可以将项目作为一个分支附加(无论如何,在某些情况下似乎允许你自己的回购协议的私有分支,cp。Collaborating in a temporary private fork to resolve a security vulnerability ) 或从我的贡献中删除其中一个存储库中的提交 activity。他们显然做不到。他们的建议是使用自定义电子邮件地址,例如no-contribution@mydomain.com 未链接到我的 GitHub 帐户。虽然这可行,但我必须重写历史才能这样做,而且两个存储库中的提交 SHA 之后都不匹配,我不太喜欢。

我的其他解决方案要么是完全废弃新项目中的历史并将所有以前的提交压缩到引用旧存储库的提交中,要么在分支而不是分叉上工作,就像这里提到的:How can I fork my own GitHub repository?.

新回购的魅力在于两个项目都有相应的名称,通过压缩提交并添加对基础项目的引用我会明确表示该项目不是全新的/从头开始而且我不会被不同的 SHA 搞糊涂,因为在我的回购协议中,不同的电子邮件地址基本上是相同的提交。另一方面,我会大幅减少这个 repo 的提交计数,这也感觉不太对。

如果我要走分支路线,我应该在当前状态下创建一个 <old project name> 分支并继续在 master 上工作,还是应该将 master 保留为它是并创建一个 <new project name>-master 分支?另外我将如何处理存储库的名称?保持原样还是给它一个新名称?请记住:我希望以一种以后可以轻松访问的方式保留第一个项目的状态。这更像是标签或非活动分支的工作吗?

请注意,我并不是真的征求意见。更确切地说,将这个问题解释为:与分支解决方案相比,我称之为“伪叉”的优点和缺点是什么(除了上述那些之外)

在“伪分支”路由的情况下:no-contribution 邮件与压缩提交相比有哪些优点和缺点?

如果是分支路线:我应该如何命名分支,我可能错过的方法的相关优缺点是什么?重命名 repo 与保留旧名称有什么好处(链接不是问题,因为两个 repo 仍然是私有的)?在重命名的情况下,在存储库主页上的 README.md 中引用“旧”分支或标记是个好主意,否则会导致问题吗?

TL;DR

我决定使用两个存储库,其中一个是另一个的伪分支(即克隆、更改远程、推送)并更改那些旧提交的作者和提交者。

赞成和反对这条路线的论据

优点

  • Preceives commit count in new repository.
  • 贡献不会在我的个人资料中重复计算。
  • 提交仍然链接到我的个人资料,因为 github 将我列为提交者。
  • 两个仓库都有指定的位置。

中性

  • 虽然使用了新的 SHA,但历史记录得以保留。
    • git怪还是会用
    • 两个回购中的提交之间没有直接联系(即您不能从一个回购中获取 SHA 并在另一个回购中选择相同的提交),这可能会导致混淆。
    • 可能看起来像是一个全新的项目,但事实并非如此。

缺点

  • 我无法使用拉取请求