Tin Nguyen
Tin Nguyen

Reputation: 99

Github invalid author email commits, no contribution activity

Recently, I did some commits without config user.email. Is there any way to edit those commits to be recognized as contribution on my GitHub profile. (there're no commit email - to add to as GitHub account - as you can see in the log bellow)

Here some recent commit from git log command:

(the last/first one with email is commited after I config user.email)

commit 4ae6cc5c00e380c70072f9647b29dc242d2682d1
Author: Tin Nguyen <[email protected]>
Date:   Thu Sep 22 11:00:30 2016 +0700

    delete some unnecessary code

commit 275362c077bb0495318d37b965c90beba2cb79b3
Author: Tin Nguyen <Tin Nguyen>
Date:   Wed Sep 21 07:41:51 2016 +0700

    modify database rules

commit c6b3af19c24627cafd862eff7449bc5d3f95cfbc
Author: Tin Nguyen <Tin Nguyen>
Date:   Sun Sep 18 14:14:23 2016 +0700
...

Upvotes: 1

Views: 2680

Answers (3)

MayeulC
MayeulC

Reputation: 1848

Well, if you didn't share your work with someone else (if they didn't pull/clone/fork it yet), you can edit those by doing an interactive rebase, for example:

git rebase -i c6b3af19^
# change the comits you want to edit to "e" or "edit", leave the other on "p", "pick"
git commit --amend --author "Tin Nguyen <[email protected]>"  --no-edit
git rebase --continue
#repeat the two last steps until done

Or more complex, but faster (one-liner):

git filter-branch --env-filter 'GIT_AUTHOR_EMAIL="[email protected]"' c6b3af19^..HEAD HEAD

Or without using filter-branch (note that you must have correctly set your name and mail globally):

 git rebase c6b3af19^ --exec 'git commit --amend --no-edit --reset-author'

Just be aware that both will overwrite authorship information from c6b3af19 to the last commit you did, they are incomplete in the case you have other authors who committed more recently.

Note that in every case, you will then have to do a forced push to your remote repository, with git push -f


In any case, I suggest you to create a new branch before attempting to do this kind of changes. You can also use the reflog to recover if something bad happens, or just git checkout 4ae6cc5c, which was your latest commit to date. But as a rule of thumb, I think it is better to branch before doing any history rewrite.

Upvotes: 0

Alec von Barnekow
Alec von Barnekow

Reputation: 1001

Configure your username and email with git config and try this:

git rebase -i YOUR_COMMIT_SHA -x "git commit --amend --reset-author -CHEAD"

It will reset the author for the selected commit.

Upvotes: 1

Cyclotron3x3
Cyclotron3x3

Reputation: 2229

git rebase and git commit -amend will help you updating user email. rebase and amend

update user email.

Upvotes: 0

Related Questions