git - 如何修改 Git 中的多个提交以更改作者

标签 git git-commit git-rewrite-history

我在 Git 中进行了一系列提交,现在我意识到我忘记正确设置我的用户名和用户电子邮件属性(新机器)。我还没有将这些提交推送到我的存储库,那么在我这样做之前如何更正这些提交(只有 master 分支上的 3 个最新提交)?

我一直在看git resetgit commit -C <id> --reset-author ,但我不认为我走在正确的轨道上。

最佳答案

警告:现在 deprecated赞成filter-repo .

当你拥有 filter-branch 的强大功能时,Rebase/amend 似乎效率低下:

git filter-branch --env-filter 'if [ "$GIT_AUTHOR_EMAIL" = "incorrect@email" ]; then
     GIT_AUTHOR_EMAIL=correct@email;
     GIT_AUTHOR_NAME="Correct Name";
     GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL;
     GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; fi' -- --all

(为清楚起见,跨行拆分,但不是必需的)

一定要在完成后检查结果,以确保您没有更改任何您不想更改的内容!

关于git - 如何修改 Git 中的多个提交以更改作者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981126/

相关文章:

git - 在 Git Bash for Windows 中, "standard input mode"对 `git commit -F -` 有什么用?

git - 由于提交消息为空而中止提交(编辑器 = 原子)

git - 如何以非交互方式重新排序 Git 中的提交

git - 将 Git 工作流从 merge 切换到 rebase : how to clean up a merge commit history?

linux - 无法关闭 hyperledger-fabric 启动的示例网络 - 权限被拒绝

git - 如何计算 Git 存储库中作者对每个文件路径名的提交次数?

Git-branch 切换所有未提交的更改都消失了

php - Composer 与私有(private)存储库的多级依赖

java - JSch 没有检测到 $HOME/.ssh/id_rsa 公钥

git - 将 Git 提交从复制的 fork 存储库重新应用到原始存储库