如何在git分支上更改作者名称

6

我前几天在github上创建了一个静态页面,但是作者名字出现了错误。

https://github.com/ronaldsuwandi/le-simplepage/commits/gh-pages

我该如何更改分支的第一次提交的作者名称?

我已经尝试过:

但没有成功 - 我对git还非常陌生...

编辑:由Amber提供的答案不适用于更改第一个提交(例如,如果我的提交历史记录是A-B-C-D,并且我想要更改B的提交历史记录,我可以运行git rebase -i A。但我不确定如何更改A本身的提交历史记录。

3个回答

9
git checkout gh-pages
git reset --hard 02bd
git commit --amend --author 'Ronald Suwandi <ronald@ronaldsuwandi.com>'
git cherry-pick 02bd..origin/gh-pages
git push -f

2

Git Tower有一个非常有用的页面,详细介绍了几种更改作者的方法。

您可以在命令行上使用以下脚本来修复存储库中的错误作者名称。

$ git filter-branch --env-filter '
WRONG_EMAIL="wrong@example.com"
NEW_NAME="New Name Value"
NEW_EMAIL="correct@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

https://www.git-tower.com/learn/git/faq/change-author-name-email


2

就像在现实生活中一样,改变历史并不是一件微不足道的事情。 ;)

在 git 中,提交记录(commit)包括作者姓名和父提交记录等属性。因此,您不能仅更改提交记录的某些属性,如作者。您唯一能做的就是放弃旧的提交记录并创建一个新的修正后的提交记录。但是,由于下一个提交记录包含了原始提交记录作为其父提交记录,因此您还需要更改该提交记录,以此类推。

git rebase 可以帮助您解决这种棘手的问题:它接受一系列提交记录,并创建一个具有更改历史的全新提交记录。由于在 git 中分支只是指向单个提交记录的指针,因此 rebase 只是将该指针从旧历史更改为新历史。

X-A-B-C-D <- "old master"
 `a-b-c-d <- "new master"

只要您在本地存储库上工作,随意更改历史记录是没有问题的。但是一旦将提交推送到像github这样的共享存储库中,情况就会发生变化。如果您已经发布了旧的历史记录,并现在发布了新的历史记录,则两个版本都会被发布。如果其他人也在该存储库上工作,旧版本有可能重新出现在您的历史记录中。
因此,通常情况下,请不要更改已发布的历史记录。但是,如果您确定没有其他人在远程存储库上工作,则仍然可以更改它:在本地修复您的历史记录,并强制将其推送到存储库中。
使用git rebase -i轻松更改本地历史记录。不幸的是,对于存储库的根提交来说,这可能有些棘手。有关详细信息,请参见使用Git更改项目的第一个提交?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接