# Solução de problemas com commits

Resolva problemas comuns de confirmação, como links de usuário incorretos, confirmações locais ausentes e blocos de proteção por push.

## As confirmações estão vinculadas ao usuário errado

GitHub vincula uma confirmação a um usuário correspondendo o endereço de email no cabeçalho de confirmação a um endereço de email em uma GitHub conta. Se suas confirmações estiverem vinculadas ao usuário errado ou a nenhum usuário, atualize as configurações de email do Git e adicione o endereço de email à sua conta.

> \[!NOTE]
> Se suas confirmações estiverem vinculadas a outro usuário, isso não lhe dará acesso ao repositório.

### Commits estão vinculados a outro usuário

1. Altere o endereço de email na configuração do Git local seguindo [Configurar o endereço de e-mail do commit](/pt/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address#setting-your-commit-email-address-in-git). Se você trabalhar em vários computadores, altere essa configuração em cada um deles.
2. Adicione o endereço de email à sua conta seguindo [Adicionando um endereço de email à sua conta de GitHub](/pt/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/adding-an-email-address-to-your-github-account).

Confirmações futuras que usam o endereço de email serão vinculadas à sua conta.

### Os commits não estão vinculados a nenhum usuário

Para descobrir por que uma confirmação não está vinculada, inspecione a confirmação.GitHub

1. Em GitHub, acesse a página principal do repositório.
2. Na página principal do repositório, acima da lista de arquivos, clique em **<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**.

   ![Captura de tela da página principal de um repositório. Um ícone de relógio e "178 commits" são realçados com um contorno laranja.](/assets/images/help/commits/commits-page.png)
3. Para navegar até um commit específico, clique na mensagem de confirmação para esse commit.

   ![Captura de tela de um commit na lista de commits de um repositório. "Update README.md" é realçado com um contorno laranja.](/assets/images/help/commits/commit-message-link.png)
4. Passe o mouse sobre o azul <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> à direita do nome de usuário.
5. Use a mensagem para decidir o que atualizar:
   * **Autor não reconhecido (com endereço de email):** Adicione o endereço de email mostrado à sua GitHub conta.
   * **Autor não reconhecido (sem endereço de email):** Defina seu endereço de email de confirmação no Git e adicione esse endereço à sua GitHub conta.
   * **Email inválido:** Defina um endereço de email de confirmação válido no Git e adicione esse endereço à sua GitHub conta.

As confirmações antigas podem não estar vinculadas depois que você atualiza as configurações de email. Consulte [Configurar o endereço de e-mail do commit](/pt/enterprise-server@3.22/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address).

## Existe uma confirmação em GitHub mas não no clone local

Se `git show COMMIT-SHA` retornar um erro localmente, mas a confirmação estiver visível GitHub, o clone local poderá estar desatualizado ou a confirmação poderá não ser mais referenciada por um branch.

### O repositório local está desatualizado

Buscar informações do repositório remoto.

```shell
git fetch REMOTE
```

Use `git fetch upstream` para o repositório upstream de uma bifurcação ou `git fetch origin` para o repositório clonado.

### O branch que continha o commit foi excluído

Se o branch foi excluído ou forçado por push, pergunte a um colaborador que ainda tem a confirmação localmente para efetuá-lo por push para um novo branch.

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

Em seguida, busque o branch recuperado.

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

### Evitar pushes forçados

Evite forçar o push, a menos que seja necessário, especialmente quando mais de uma pessoa pode enviar por push para o repositório. Forçar o envio por push reescreve o histórico do repositório e pode interromper colaboradores ou solicitações de pull corrompidas.

## Uma confirmação é bloqueada pela proteção por push

A proteção por push bloqueia confirmações, uploads ou solicitações de API que contêm segredos com suporte.

### Noções básicas sobre por que a proteção por push bloqueou seu commit

Se a proteção por push bloquear seu trabalho, GitHub detectou um segredo com suporte em sua confirmação ou solicitação. Remova o segredo antes de tentar novamente.

### Resolvendo um bloqueio de proteção de push

1. Examine a mensagem de proteção por push para identificar o segredo e onde ele aparece.
2. Remova o segredo da confirmação, upload de arquivo ou solicitação de API.
3. Tente o push, a confirmação, o upload ou a solicitação novamente.
4. Se você acredita que o segredo é seguro para enviar por push, siga as etapas de bypass para o fluxo de trabalho:
   * [Trabalhando com proteção contra push a partir da linha de comando](/pt/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-on-the-command-line)
   * [Trabalhar com proteção por push na interface do usuário do GitHub](/pt/enterprise-server@3.22/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/push-protection-in-the-github-ui)
   * [Trabalhando com a proteção contra push via API REST](/pt/enterprise-server@3.22/code-security/concepts/secret-security/push-protection-from-the-rest-api)

## Leitura adicional

* [Pesquisar commits](/pt/enterprise-server@3.22/search-github/searching-on-github/searching-commits)
* [Proteção por Notificações Push](/pt/enterprise-server@3.22/code-security/concepts/secret-security/push-protection)
* [Padrões de varredura de segredos com suporte](/pt/enterprise-server@3.22/code-security/reference/secret-security/supported-secret-scanning-patterns)