最近,我做了一些没有config user.email的提交。有没有办法编辑这些提交,以便在我的GitHub配置文件中被识别为贡献。 (那里没有提交电子邮件 - 添加为GitHub帐户 - 正如您在日志中所见)
这里有一些git log命令的最近提交:
(在我配置user.email之后提交了最后一个带电子邮件的人)
commit 4ae6cc5c00e380c70072f9647b29dc242d2682d1
Author: Tin Nguyen <my-Gmail@gmail.com>
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
...
答案 0 :(得分:0)
git rebase和git commit -amend将帮助您更新用户电子邮件。 rebase and amend
答案 1 :(得分:0)
使用git config
配置您的用户名和电子邮件,然后尝试:
git rebase -i YOUR_COMMIT_SHA -x "git commit --amend --reset-author -CHEAD"
它将重置所选提交的作者。
答案 2 :(得分:0)
好吧,如果您没有与其他人分享您的工作(如果他们还没有拉/克隆/分叉),您可以通过执行交互式rebase来编辑它们,例如:
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 <my-Gmail@gmail.com>" --no-edit
git rebase --continue
#repeat the two last steps until done
或者更复杂但更快(单线):
git filter-branch --env-filter 'GIT_AUTHOR_EMAIL="my-Gmail@gmail.com"' c6b3af19^..HEAD HEAD
或者不使用filter-branch
(请注意,您必须在全球范围内正确设置姓名和邮件):
git rebase c6b3af19^ --exec 'git commit --amend --no-edit --reset-author'
请注意,两者都会覆盖从c6b3af19
到最后一次提交的作者身份信息,如果您有其他最近提交的作者,则这些信息不完整。
请注意,在每种情况下,您都必须使用git push -f
强制推送到远程存储库
无论如何,我建议您在尝试进行此类更改之前创建一个新分支。如果发生了不好的事情,你也可以使用reflog来恢复,或者只是git checkout 4ae6cc5c
,这是你最近的最新提交。但根据经验,我认为在进行任何历史记录重写之前最好进行分支。