【Git】Github如何弥补提交记录contributions
提交记录contributions为什么会丢失?
很多朋友在提交本地项目到gihub时发现,仅仅在项目初始化时才会显示一条contributions,后续再commit就不会有了。这是因为:
- 进行Commits的用户、邮箱不是你的Github帐号的用户名和邮箱。
- 不是在这个版本库的默认分支进行的Commit。
- 这个仓库是一个Fork仓库,而不是独立仓库。
如何弥补?
这里只针对第一条“进行Commits的用户、邮箱不是你的Github帐号的用户名和邮箱。”的弥补方式。
1、将本地开发环境的github的用户名和邮箱改为自己github的。(这个自己查一下,有很多教程,不再详细说明了)。
2、创建存储库的全新裸克隆:
git clone --bare https://github.com/user/your-repo.git
cd your-repo.git
3、在git bash执行以下两个脚本
第一个脚本:修改以前邮箱用错的commit记录
git filter-branch --env-filter ' OLD_EMAIL="错误的邮箱" CORRECT_NAME="github用户名" CORRECT_EMAIL="github邮箱" if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi 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;
第二个脚本:修改以前用户名用错的commit记录
git filter-branch --env-filter ' OLD_NAME="错误的用户名" CORRECT_NAME="github用户名" CORRECT_EMAIL="github邮箱" if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ] then export GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ] then export GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi ' --tag-name-filter cat -- --branches --tags;
4、按Enter键运行脚本。
5、查看新的Git历史记录是否有错误。
git log
6、将更正的历史记录推送到GitHub:
git push --force --tags origin 'refs/heads/*'
参考:
https://help.github.com/en/github/using-git/changing-author-info