为何GitHub检测到两位作者但SourceTree及本地git log无此显示?
为什么GitHub显示第二位作者,但本地Git工具只显示一位?
这个问题的核心在于Git提交包含两个独立的身份字段:Author(作者)和Committer(提交者),不同工具对这两个字段的展示逻辑存在差异。
具体原因分析:
- 当你在另一台电脑执行
git commit --amend --no-edit时,这个命令会复用原提交的Author信息(也就是最初创建该提交的身份),但会将Committer信息替换为当前电脑的Git配置——哪怕两台电脑的姓名邮箱看起来完全一致,也可能存在GitHub能识别的细微差异。 - 本地的
git log --format='%aN'命令只输出%aN(Author的名字),所以你看不到Committer的信息;SourceTree默认也只展示Author,不会显示Committer身份。 - 而GitHub会同时识别并展示Author和Committer的身份:如果这两个字段的信息在GitHub的用户系统中被判定为不同(比如姓名大小写、空格、邮箱大小写,或者重音字符的细微差别),就会被显示为两位作者。
验证步骤:
你可以执行下面的命令,查看目标提交的Author和Committer的完整信息,对比两者是否存在细微差异:
git log --format='%h %aN <%aE> | %cN <%cE>'
这个命令会输出每个提交的哈希值、Author的姓名邮箱,以及Committer的姓名邮箱。如果两者的信息不完全一致,那就是GitHub显示两位作者的直接原因。
解决办法:
如果确认是信息不一致导致的,你可以重新执行amend命令,强制指定Author信息与Committer一致:
git commit --amend --no-edit --author="你的全名 <你的邮箱>"
替换成你正确的姓名和邮箱(确保和当前Git配置完全一致),然后重新推送到GitHub,就能让GitHub只显示一位作者了。
内容的提问来源于stack exchange,提问作者Javier García
相关产品推荐
相关产品推荐

