Problem
-------

You have installed GPG, then tried to commit and suddenly you see this error message after it:
```
error: gpg failed to sign the data
fatal: failed to write commit object
```

Debug
-----

For understanding what's going on, first check what git is doing, so add `GIT_TRACE=1` at the beginning of the command you used before (`git commit` or `git rebase`):
```
GIT_TRACE=1 git commit
```

With that you can see what GPG is doing:
Probably you will see something like this
```
10:37:22.346480 run-command.c:637       trace: run_command: gpg --status-fd=2 -bsau <your GPG key>
```
(Check if your GPG key is correct)

Execute that gpg command again in the command line:
```
gpg --status-fd=2 -bsau <your GPG key>
```
👆🏻 With this now you could see what happened in detail!

Solutions
---------

We can have many problems, but I list what I found:

1. It could be that the *GPG key was expired*: https://stackoverflow.com/a/47561300/532912
1. Another thing could be that *the secret key was not set properly* (In my case the message said `gpg: signing failed: No secret key` as it can be see in the image below).
![image](https://user-images.githubusercontent.com/1524522/134691912-b0fdd04b-344a-4b02-9ff9-68cba7f9f0fb.png)
It means that is not finding the key that was set. You would need to set up the GPG key in Git (again):
    - List the secret keys available in GPG.
    ```shell
    gpg --list-secret-keys --keyid-format=long
    ```
    - Copy your key
    - Set your key for your user in git
    ```shell
    git config --global user.signingkey <your key>
    ```

1. Another popular solution that could help was shared here by [@NirajanMahara](https://github.com/NirajanMahara): https://gist.github.com/paolocarrasco/18ca8fe6e63490ae1be23e84a7039374?permalink_comment_id=3767413#gistcomment-3767413
1. You can see in the thread of this gist other ways to find the solution to other problems. I recommend to read the [Github guide for signing commits with GPG](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key).

Hope it helps!