I'm having problems trying to link my commits to my GitHub account. Commits are being reported on GitHub the way my picture shows. The values user.name and user.email are correct, any other ideas to check?
Thanks in advance
I'm having problems trying to link my commits to my GitHub account. Commits are being reported on GitHub the way my picture shows. The values user.name and user.email are correct, any other ideas to check?
Thanks in advance
Even though your settings might look correct, this error implies that something in the user.email
field is incorrect, which gives Github the wrong information about who the committer is. A small typo could throw the whole thing off. The fix is in the third step, and the first two steps help identify what the problem is.
First, run git config -l
to check your settings and make sure that you don't have something unexpected in there. Run git log
and take note of how the Author
field looks. It should be in the format of Author: Your-Name <your-github-email@example.com>
. The part within the brackets is the important part as far as Github is concerned.
Second, if you've been able to commit something successfully in the past, open that repo and run git log
to find the commit where everything worked properly. Check that Author
field against the one that isn't working and see if there is a difference.
Third, if there is a difference, switch back to the repo at issue and run git config --global user.email correct-email@example.com
.
If the problem persists, check your Github email settings and make sure that the email address that you are using is added to your account.
See this help article for more information.
I had a similar issue and stvnrlly's response was useful. In my case when running:
git config --global user.email
the CL would spit out "email@email.com"
which is wrong as it should display the email address without the ""
. So in my case the set-up was not properly done.
I also came across this issue today, but in my case, the commits were pretty old and I found the issue after committing using erroneous details for a week.
So this answer is for when you find your older commits are not linked to your GitHub. First correct your git config
settings as has been mentioned already.
Now, to modify your commit history follow these steps:
$ cd working_dir
$ git clone --bare https://github.com/user/repo.git
$ cd repo.git
Your commits might be unlinked to your original GitHub due to various reasons, i.e. incorrect/old email, incorrect/old username, etc. Also, your commit and/or authorship details might be incorrect. I list down different steps for different cases.
3.1 Incorrect email linked
If commit details are incorrect:
Paste the following code in your command line.
git filter-branch --env-filter '
OLD_EMAIL="old@email.com"
CORRECT_NAME="correct-username"
CORRECT_EMAIL="correct@email.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
If author details are incorrect:
Paste the following code in your command line.
git filter-branch --env-filter '
OLD_EMAIL="old@email.com"
CORRECT_NAME="correct-username"
CORRECT_EMAIL="correct@email.com"
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
Here, replace OLD_EMAIL
with your old email address, CORRECT_NAME
with your current username, and CORRECT_EMAIL
with your current correct email address.
You can check your old email address(es) using the command: git log --pretty="format:%ae"
3.2. Wrong username linked
If commit details are incorrect:
Paste the following code in your command line.
git filter-branch --env-filter '
OLD_NAME="old-username"
CORRECT_NAME="correct-username"
CORRECT_EMAIL="correct@email.com"
if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
If author details are incorrect:
Paste the following code in your command line.
git filter-branch --env-filter '
OLD_NAME="old-username"
CORRECT_NAME="correct-username"
CORRECT_EMAIL="correct@email.com"
if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
Here, replace OLD_NAME
with your old name/username appearing on commits, CORRECT_NAME
with your current username, and CORRECT_EMAIL
with your current correct email address.
Your output should look something like this:
Rewrite c9ef481aca2cbeac930da8b1250c7f81ac779372 (19/20) (2 seconds passed, remaining 0 predicted)
Ref 'refs/heads/main' was rewritten
If your output looks like this, move to step 4.
Push the modified history to your original repository.
$ git push --force --tags origin 'refs/heads/*'
Your output should look something like this:
Username for 'https://github.com': user
Password for 'https://user@github.com':
Enumerating objects: 96, done.
Counting objects: 100% (96/96), done.
Delta compression using up to 40 threads
Compressing objects: 100% (48/48), done.
Writing objects: 100% (94/94), 852.67 KiB | 42.63 MiB/s, done.
Total 94 (delta 41), reused 77 (delta 40)
remote: Resolving deltas: 100% (41/41), done.
To https://github.com/user/repo.git
+ 4777199...1f210c5 main -> main (forced update)
$ cd ..
$ rm -rf repo.git
If you received your e-mail address from gmail, and in "." If there is a sign, like me, you may have encountered such trouble. For example, if your original e-mail address is test.code@gmail.com
and you have registered as testcode@gmail.com
when you register with github, you are very likely to encounter this error.
As a solution; you need to link both email addresses to your github account.
Here are the exact steps of how I solved the problem.
(1) The user.name field in my ~/.gitconfig file did not need to match what I had on Github. However, the user.email field in ~/.gitconfig needed to be an exact, letter-by-letter match to the email field on Github.
(2) The relevant email field on Github is under "Settings" (the icon on the upper right that looks like the gear) and then, rather than resetting the email in "Your Profile" (this aspect of the instructions is what confused me), I needed to actually click on the section of Settings called "Emails" and add the new email address I had in user.email. I followed the instructions on Github to verify this email address. I did not need to make this email address "primary" to fully synchronize my computer with my Github account.
File paths and names are standard for Mac OS X. Thanks @stvnrlly, I used the general gist of your answer.
As far as I know, you need 3 configuration, to commits get linked to your account :
user.email
: here goes your email, that you have used to create your account or currently linked to your account. Not xyz@github.com
, but xyz@gmail.com
user.name
| user.username
: you need both, and both should have the same value. It is available in your account's url, profile everywhere.
How to set these values:
git config --global user.email "xyz@gmail.com"
git config --global user.name xyz
git config --global user.username xyz
Check these values have been set or not:
git config --global --list
You have to get the reference for the remote repo first.
git remote add origin https://github.com/yourGithubAccount/yourRepo.git
then do git push -u origin master
.