# 提交疑难解答

解决常见的提交问题，例如不正确的用户链接、缺少本地提交和推送保护块。

## 提交链接到错误的用户

GitHub 通过将提交标头中的电子邮件地址与帐户上 GitHub 的电子邮件地址相匹配，将提交链接到用户。 如果提交链接到错误的用户或没有用户，请更新 Git 电子邮件设置并将电子邮件地址添加到帐户。

> \[!NOTE]
> 如果提交链接到另一个用户，则不会授予他们对存储库的访问权限。

### 提交链接到其他用户

1. 按照 [设置提交电子邮件地址](/zh/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git) 更改本地 Git 配置中的电子邮件地址。 如果在多台计算机上工作，请针对每个计算机更改此设置。
2. 按照 [将电子邮件地址添加到GitHub帐户](/zh/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/adding-an-email-address-to-your-github-account) 将电子邮件地址添加到帐户。

将来使用电子邮件地址的提交将链接到你的帐户。

### 提交没有链接到任何用户

若要了解提交未链接的原因，请检查提交。GitHub

1. 在 GitHub 上，导航到存储库的主页面。
2. 在存储库的主页上的文件列表上方，单击“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-history" aria-label="history" role="img"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg> commits”\*\*\*\*。

   ![存储库的主页的屏幕截图。 时钟图标和“178 个提交”以橙色边框突出显示。](/assets/images/help/commits/commits-page.png)
3. 若要导航到特定提交，请单击该提交的提交消息。

   ![存储库提交列表中提交的屏幕截图。 “更新 README.md”以橙色边框突出显示。](/assets/images/help/commits/commit-message-link.png)
4. 将鼠标悬停在用户名右侧的蓝色 <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-question" aria-label="Question mark" role="img"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.92 6.085h.001a.749.749 0 1 1-1.342-.67c.169-.339.436-.701.849-.977C6.845 4.16 7.369 4 8 4a2.756 2.756 0 0 1 1.637.525c.503.377.863.965.863 1.725 0 .448-.115.83-.329 1.15-.205.307-.47.513-.692.662-.109.072-.22.138-.313.195l-.006.004a6.24 6.24 0 0 0-.26.16.952.952 0 0 0-.276.245.75.75 0 0 1-1.248-.832c.184-.264.42-.489.692-.661.103-.067.207-.132.313-.195l.007-.004c.1-.061.182-.11.258-.161a.969.969 0 0 0 .277-.245C8.96 6.514 9 6.427 9 6.25a.612.612 0 0 0-.262-.525A1.27 1.27 0 0 0 8 5.5c-.369 0-.595.09-.74.187a1.01 1.01 0 0 0-.34.398ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> 上。
5. 使用消息确定要更新的内容：
   * **无法识别的作者（电子邮件地址）：** 将显示的电子邮件地址添加到帐户 GitHub 。
   * **无法识别的作者（无电子邮件地址）：** 在 Git 中设置提交电子邮件地址，然后将该地址添加到帐户 GitHub 。
   * **电子邮件无效：** 在 Git 中设置有效的提交电子邮件地址，然后将该地址添加到帐户 GitHub 。

更新电子邮件设置后，旧提交可能不会链接。 请参阅“[设置提交电子邮件地址](/zh/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address)”。

## 提交存在于GitHub但本地克隆中不存在

如果 `git show COMMIT-SHA` 在本地返回错误，但提交可见 GitHub，则本地克隆可能已过期，或者分支可能不再引用提交。

### 本地仓库已过期

从远程存储库提取信息。

```shell
git fetch REMOTE
```

用于 `git fetch upstream` 分支的上游存储库或 `git fetch origin` 克隆的存储库。

### 包含提交的分支已被删除

如果删除了分支或强制推送了分支，请询问在本地仍具有提交以将其推送到新分支的协作者。

```shell
git branch recover-B B
git push upstream B:recover-B
```

然后，提取恢复的分支。

```shell
git fetch upstream recover-B
```

### 避免强制推送

避免强制推送，除非必要，尤其是当多个人员可以推送到存储库时。 强制推送重写存储库历史记录，并可能会中断协作者或损坏的拉取请求。

## 推送保护阻止提交

推送保护会阻止包含支持的机密的提交、上传或 API 请求。

### 理解为什么推送保护阻止了你的提交

如果推送保护阻止工作，请在 GitHub 提交或请求中检测到受支持的机密。 在重试之前删除机密。

### 解决推送保护阻拦

1. 查看推送保护消息以标识机密及其显示位置。
2. 从提交、文件上传或 API 请求中删除机密。
3. 再次尝试推送、提交、上传或请求。
4. 如果你认为机密是安全的推送，请按照工作流的绕过步骤操作：
   * [从命令行使用推送保护](/zh/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-on-the-command-line)
   * [通过 GitHub UI 使用推送保护功能](/zh/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-in-the-github-ui)
   * [使用与 REST API 相关的推送保护](/zh/enterprise-server@3.22/code-security/concepts/secret-security/push-protection-from-the-rest-api)

## 延伸阅读

* [搜索提交](/zh/enterprise-server@3.22/search-github/searching-on-github/searching-commits)
* [推送保护](/zh/enterprise-server@3.22/code-security/concepts/secret-security/push-protection)
* [支持的机密扫描模式](/zh/enterprise-server@3.22/code-security/reference/secret-security/supported-secret-scanning-patterns)