【问题标题】:Sync commit credits after changing user.email in git config在 git config 中更改 user.email 后同步提交信用
【发布时间】:2021-08-05 14:38:47
【问题描述】:

在过去的几个月里,我一直在工作并提交到 GitHub,而没有在 git 配置文件中设置电子邮件地址。现在我开始申请工作,我担心这对雇主来说可能看起来很糟糕,因为我似乎一直在偷懒。有没有办法将提交信用同步到当前电子邮件,以便它们显示在我的个人资料中?

【问题讨论】:

    标签: git github


    【解决方案1】:

    注意:请不要重写共享项目的历史记录。

    但在您是唯一贡献者的个人项目中,这完全没问题。

    如果你想更改提交作者,你可以使用这个聪明的工具:https://github.com/jayphelps/git-blame-someone-else 并使用你的新电子邮件作为<author>

    第二步是将其应用于多个提交。这个答案派上用场了:Git run shell command for each commit

    所以总的来说,你最终会得到: git rebase -i --exec "git blame-someone-else <author> <commit>" <first commit in your branch>~

    • 要在变基期间获取当前提交 SHA,您可以插入 $(git rev-parse HEAD) 而不是 <commit>

    • 你可以使用$(git rev-list --max-parents=0 HEAD)代替<first commit in your branch>

    【讨论】:

    • 这似乎是一个很好的方法。但是,我确实收到错误:执行失败,使用此命令时:git rebase -i --exec "git blame-someone-else 'Max B <maxb@gmail.com>'" $(git rev-list --max-parents=0 HEAD)。知道问题可能是什么吗?我觉得我可能对引号做错了。
    • 这应该是git rebase -i --exec "git blame-someone-else 'Max B <maxb@gmail.com>' $(git rev-parse HEAD)" $(git rev-list --max-parents=0 HEAD)
    • 您错过了 参数。您可以先尝试只执行括号中的命令 git blame-someone-else 'Max B <maxb@gmail.com>' $(git rev-parse HEAD) - 如果它适合您,请尝试更多提交。
    • 哦……真是个错误。谢谢一堆。它还没有出现在我的 github 个人资料中,但是当使用 git log 时,它现在会显示正确的电子邮件!手指越过它最终会同步。
    • 更正,我只是没有推送更改。现在可以了,感谢您的帮助!
    猜你喜欢
    • 2015-10-03
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2014-10-26
    • 2014-07-12
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多