乐闻世界logo
搜索文章和话题

Git 如何更改某一次提交的提交作者?

4个答案

1
2
3
4

要更改某次提交记录的提交作者,可以使用git commit --amend命令来修改最近的提交,或者如果需要更改更早的提交,则可以使用git rebase命令。下面我会详细解释这两种情况的操作步骤。

使用git commit --amend

如果你要更改的是最近的提交,可以使用git commit --amend选项来重新指定提交作者。以下是操作步骤:

  1. 打开命令行或终端。

  2. 切换到需要更改提交作者的仓库目录。

  3. 执行以下命令来更改最近一次提交的作者信息:

    sh
    git commit --amend --author="新作者名 <新作者邮箱>"

    例如,如果我要将作者更改为“John Doe”和他的邮箱“johndoe@example.com”,命令将是:

    sh
    git commit --amend --author="John Doe <johndoe@example.com>"
  4. 这会打开一个文本编辑器,允许你修改提交信息。保存并关闭编辑器后,提交的作者信息将被更新。

请注意,这种方式会修改最后一次提交并创建一个新的提交哈希,所以如果您已经将提交推送到远程仓库,之后必须使用git push --force来覆盖远程仓库上的提交记录。

使用git rebase

如果需要更改较早的提交记录的作者,可以使用git rebase命令。这里是一个简化的例子:

  1. 打开命令行或终端。

  2. 切换到你的仓库目录。

  3. 找出需要修改作者的提交的哈希值。可以使用git log查看提交历史。

  4. 运行git rebase命令开始交互式变基操作:

    sh
    git rebase -i <哈希值的前一次提交>

    例如,如果哈希值是abcd1234,则命令将是:

    sh
    git rebase -i abcd1234^
  5. 在打开的文本编辑器中,将要更改的提交前面的pick改为edit

  6. 保存并关闭编辑器。

  7. 当rebasing到指定的提交时,执行以下命令来更改作者信息:

    sh
    git commit --amend --author="新作者名 <新作者邮箱>"

    使用相同的例子,“John Doe”的命令将是:

    sh
    git commit --amend --author="John Doe <johndoe@example.com>"
  8. 完成作者信息的修改后,继续rebase进程:

    sh
    git rebase --continue
  9. 如果有冲突,解决它们并使用git add将更改的文件标记为已解决。

  10. 重新运行git rebase --continue直到rebase完成。

由于这将改变历史中每个后续提交的哈希值,如果这些提交已经被推送到远程仓库,你可能需要使用git push --force来更新远程仓库。

在执行这些操作时,请务必意识到,修改公共历史是一个危险的行为,因为它可以对其他协作者造成混淆和额外的工作。因此,这些操作应该只在确实必要,且仓库的其他协作者都同意的情况下进行。

2024年6月29日 12:07 回复

如果您只想更改上次提交的作者,您可以这样做:

  • 重置当前存储库的作者:

    git config --local user.name "Alex Smith"

    git config --local user.email alex@email.com

  • 现在重置提交的作者,无需编辑:

    git commit --amend --reset-author --no-edit

  • 强制推送您的更改而不覆盖其他任何人的提交:

    git push --force-with-lease

请注意,这也会更改作者时间戳。

要对最后 N 次提交执行此操作:

git rebase --onto HEAD~N --exec "git commit --amend --reset-author --no-edit" HEAD~N

2024年6月29日 12:07 回复

您可以使用以下命令更改上次提交的作者。

git commit --amend --author="Author Name <email@address.com>"

然而,如果你想更改多个提交的作者姓名,那就有点棘手了。您需要启动交互式变基,然后将提交标记为编辑,然后一一修改并完成。

  1. 开始变基git rebase -i

  2. pick将关键字更改edit为要更改作者姓名的提交。

  3. 然后关闭编辑器。对于初学者,请点击Escape然后输入:wq并点击Enter

然后你会看到你的终端就像什么都没发生一样。实际上,您正处于交互式变基过程中。现在是时候使用上面的命令修改提交的作者姓名了。它将再次打开编辑器。退出并继续使用 进行变基git rebase --continue。对要编辑的提交计数重复相同的操作。当您收到消息时,您可以确保交互式变基已完成No rebase in progress?

2024年6月29日 12:07 回复

在Git中,如果你想要更改单个提交的提交作者,你可以使用git commit --amend --author="Author Name <email@example.com>" 命令。但这只会影响最新的提交。如果你需要更改历史中特定的一个旧的提交,你可以使用git rebase -i 命令,然后选择要修改的提交,并使用rebase期间的edit功能。

下面是详细的步骤来更改一个旧的提交的作者:

  1. 使用git log找到你想要更改的提交的哈希值。

  2. 启动交互式变基操作,选择要修改的提交之前的一个提交作为基础。例如,如果你想要修改的提交哈希是abc123,则执行:

    sh
    git rebase -i abc123^

    注意:^表示选择这个哈希之前的提交,因为我们需要对这个特定的提交作出修改。

  3. 在弹出的编辑器中,你会看到一系列提交列表。找到你想要修改的提交,将它前面的pick改为edit

  4. 保存并退出编辑器。Git现在将会暂停变基操作,并允许你修改那个特定的提交。

  5. 现在你可以使用以下命令来更改提交的作者:

    sh
    git commit --amend --author="New Author Name <newauthor@example.com>" --no-edit

    --no-edit参数表示保持提交信息不变。如果你也想要编辑提交信息,可以省略这个参数。

  6. 一旦完成,继续变基进程:

    sh
    git rebase --continue

    如果有冲突,解决冲突后需要用git add将文件标记为已解决,然后再次运行git rebase --continue

  7. 完成变基后,如果你更改的是已经推送到远程仓库的提交,你需要强制推送你的更改:

    sh
    git push origin branch_name --force

    或者,如果你是在共享分支上工作,可能更喜欢使用:

    sh
    git push origin branch_name --force-with-lease

    这种方法更安全一些,因为它会在远程分支有你本地不知道的新提交时防止推送。

请注意,更改历史提交,并且强制推送到远程仓库会重写共享的分支历史,这可能会对其他协作者造成影响。在进行这类操作前,最好和你的团队沟通,并确认这是一个可接受的操作。

2024年6月29日 12:07 回复

你的答案