我分支我的github项目前几天创建了静态页面,但是我的作者姓名搞砸了
https://github.com/ronaldsuwandi/le-simplepage/commits/gh-pages
如何重命名作者以进行分支的第一次提交?
我试过
但是没有运气 - 我仍然是git的新手..
编辑:Amber给出的答案如果我想更改第一次提交(例如,如果我的提交历史记录为A-B-C-D
并且我想更改{{1}的提交历史记录,则无效我可以做B
。但如果我想更改git rebase -i A
本身的提交历史记录,我不知道该怎么办。
答案 0 :(得分:4)
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
答案 1 :(得分:2)
就像在现实生活中一样,改变历史不是一件小事。 ;)
在git中,提交包括(其中包括)作者姓名和父提交。因此,您不能简单地更改提交作者之类的属性。你唯一能做的就是抛弃旧的提交并创建一个新的固定提交。但是,由于下一次提交确实包含原始提交作为父级,因此您也必须更改该提交。 - 但是你又不能这样做,但你需要更换旧的等等。
有git rebase
来帮助你处理这类丑陋的事情:它需要一系列提交,并创建一个具有更改历史记录的全新提交。由于git中的分支只是指向单个提交的指针,因此rebase只是将指针从旧历史记录更改为新记录。
X-A-B-C-D <- "old master"
`a-b-c-d <- "new master"
只要您正在使用本地存储库,就可以根据需要更改历史记录。一旦您通过将提交推送到像github这样的共享存储库来发布提交,事情就会发生变化。如果您已经发布了旧历史记录并且现在发布了新历史记录,则会发布这两个版本,如果其他版本也在该存储库上运行,那么旧版本可能会找到回溯到您的历史记录的好处。
因此,一般情况下,只要在发布历史记录后不要更改历史记录。但是,如果您确定没有其他人在您的远程存储库上工作,您仍可以执行此操作:在本地修复您的历史记录并强制将其推送到存储库。
使用git rebase -i
可以轻松在本地更改历史记录。不幸的是,对于存储库的根提交,它有点棘手。有关详细信息,请参阅Change first commit of project with Git?。
答案 2 :(得分:1)
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