Github 会计算通过 -no-ff merge(不是快进)合并的分支的贡献吗?

Will Github count contributions from branches merged by -no-ff merge (not fast forward)?

Github 关于 problems with contributions 的文章没有关于 --no-ff 合并的文字。

我找到了一些答案in this reddit thread,但过程对我来说还不是很清楚。

编辑: 例如我在功能分支中做了一些提交,然后我将这个分支与主分支合并了。 Github 会计算我个人资料中来自功能分支的所有提交还是仅计算合并提交?

首先想一想 --no-ff 的逆运算意味着什么:您正在进行快进合并。

现在什么是快进合并?从本质上讲,这意味着您只是在推进分支指针而不实际创建任何提交。由于提交是记录贡献的东西(因为它们持有 author/committer 信息),所以快进显然不会导致对存储库的可见提交贡献。

常见的存储库托管解决方案会跟踪对存储库的推送,因此您对分支的更新推送 可以 记录为贡献,但这通常不会完成,因为它不是可记录在存储库本身中。

因此,在查看非快进合并时,这是您实际创建合并两个(或更多)不同分支的合并提交的地方。 merge commit,作为一个普通的commit,会妥善记录committer和author信息,算作贡献。

那么现在让我们看看 GitHub 写了什么算作贡献:

Commits will appear on your contributions graph if they meet all of the following conditions:

  1. The email address used for the commits is associated with your GitHub account.
  2. The commits were made in a standalone repository, not a fork.
  3. The commits were made:
    • In the repository's default branch (usually master)
    • In the gh-pages branch (for repositories with Project Pages sites)

条件 1 由您的本地 Git 配置以及您设置 GitHub 帐户的方式处理。 2 是不言自明的,而 3 本质上要求合并提交落在默认分支中。如果您要与 master 合并,这将有效。

In addition, at least one of the following must be true:

  1. You are a collaborator on the repository or are a member of the organization that owns the repository.
  2. You have forked the repository.
  3. You have opened a pull request or issue in the repository.
  4. You have starred the repository.

如果您对存储库有某种推送访问权限(直接访问,或作为拉取请求的一部分),也应该保证其中一个。

所以是的,合并提交应该算作贡献。