如何将提交作者更改为一个特定提交?

如何将提交作者更改为一个特定提交?

我想更改历史上一个特定提交的作者。这不是最后一次承诺。

我知道这个问题-如何在git中更改提交的作者?

但我在想一些事情,我用散列或短时散列来识别提交。


犯罪嫌疑人X
浏览 536回答 3
3回答

心有法竹

在历史记录中比需要修改的提交早一点的交互式重基(git rebase -i <earliercommit>)。在重定向提交的列表中,将文本更改为pick到edit在要修改的散列旁边。然后,当git提示您更改提交时,请使用以下命令:git&nbsp;commit&nbsp;--amend&nbsp;--author="Author&nbsp;Name&nbsp;<email@address.com>"例如,如果提交历史记录是A-B-C-D-E-F带着F如HEAD,而您想要更改C和D那你就.。指定git rebase -i B&nbsp;(下面是执行git rebase -i B命令)如果你需要编辑A,使用git rebase -i --root为这两种情况更改行C和D从…pick到edit一旦重基开始,它将首先在C你会git commit --amend --author="Author Name <email@address.com>"然后git rebase --continue它会在D那你就会git commit --amend --author="Author Name <email@address.com>"再一次git rebase --continue重新基地就完成了。使用git push -f若要使用更新的提交更新源,请执行以下操作。

慕沐林林

这个接受答案这个问题是一个非常巧妙地使用交互式重基的方法,但不幸的是,如果我们试图更改以前的作者在随后被合并的分支上的提交,那么它就会显示出冲突。更普遍地说,当处理混乱的历史时,它不起作用。由于我担心运行依赖于设置和取消设置环境变量来重写git历史的脚本,所以我编写了一个基于这个职位它类似于这个答案但更完整。以下是测试和工作,不像链接答案。为了清楚地阐明03f482d6是我们试图替换的提交者,并且42627abe是与新作者的承诺。签出我们试图修改的提交。git&nbsp;checkout&nbsp;03f482d6让作者改变。git&nbsp;commit&nbsp;--amend&nbsp;--author&nbsp;"New&nbsp;Author&nbsp;Name&nbsp;<New&nbsp;Author&nbsp;Email>"现在,我们有一个假设为Hash的新提交42627abe.检查原来的分支。将旧的提交替换为本地的新提交。git&nbsp;replace&nbsp;03f482d6&nbsp;42627abe基于替换重写所有未来提交。git&nbsp;filter-branch&nbsp;--&nbsp;--all为保持清洁而拆下更换物。git&nbsp;replace&nbsp;-d&nbsp;03f482d6推送新的历史记录(只有在下面失败时才使用强制,并且只有在使用git log和/或git diff).git&nbsp;push&nbsp;--force-with-lease与4-6不同,您只需重新定位到新提交:git&nbsp;rebase&nbsp;-i&nbsp;42627abe

慕丝7291255

GitHub文档包含一个脚本,用于替换分支中所有提交的提交者信息。.#!/bin/shgit&nbsp;filter-branch&nbsp;--env-filter&nbsp;' OLD_EMAIL="your-old-email@example.com" CORRECT_NAME="Your&nbsp;Correct&nbsp;Name" CORRECT_EMAIL="your-correct-email@example.com" if&nbsp;[&nbsp;"$GIT_COMMITTER_EMAIL"&nbsp;=&nbsp;"$OLD_EMAIL"&nbsp;] then &nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;GIT_COMMITTER_NAME="$CORRECT_NAME" &nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;GIT_COMMITTER_EMAIL="$CORRECT_EMAIL" fi if&nbsp;[&nbsp;"$GIT_AUTHOR_EMAIL"&nbsp;=&nbsp;"$OLD_EMAIL"&nbsp;] then &nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;GIT_AUTHOR_NAME="$CORRECT_NAME" &nbsp;&nbsp;&nbsp;&nbsp;export&nbsp;GIT_AUTHOR_EMAIL="$CORRECT_EMAIL" fi '&nbsp;--tag-name-filter&nbsp;cat&nbsp;--&nbsp;--branches&nbsp;--tags
打开App,查看更多内容
随时随地看视频慕课网APP