如何在git分支上更改作者姓名
我分支了我的github项目来创建静态页面,但有一天弄乱了我的作者的名字
https://github.com/ronaldsuwandi/le-simplepage/commits/gh-pages
如何重命名作者为分支的第一次提交?
我试过了
但没有运气 - 我仍然是新的git ..
编辑:如果我想改变第一次提交(例如,如果我的提交历史记录是ABCD
并且我想更改B
的提交历史记录,我可以做git rebase -i A
,但由Amber给出的答案不起作用。不知道如果我想改变A
本身的提交历史该怎么办。
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
就像在现实生活中一样,变化的历史并不是一件微不足道的事情。 ;)
在git中,提交包括(除其他外)作者名称和父提交。 因此你不能简单地改变像提交作者那样的属性。 你唯一能做的就是扔掉旧的提交并创建一个新的提交。 但是由于下一次提交确实包含了原始提交作为父项,您也必须更改该提交。 - 但是你不能这样做,但你需要替换旧的,等等。
有git rebase
来帮助你处理这种丑陋的事情:它需要一系列的提交,并创建一个全新的历史更改。 作为git中的一个分支只是一个指向单个提交的指针,rebase只是将该指针从旧历史更改为新历史。
X-A-B-C-D <- "old master"
`a-b-c-d <- "new master"
只要您在本地存储库上工作,就可以尽可能多地更改历史记录。 只要你发布你的提交,把它们推送到像github这样的共享库就会改变。 如果您已经发布了旧的历史记录并现在发布了新的历史记录,那么这两个版本都会发布,如果其他人也在该存储库上工作,那么旧版本可能会找到回到您的历史记录的机会。
所以一般来说,只要你发布它就不要改变历史。 但是如果您确定其他人不在您的远程存储库上工作,则无论如何您都可以这样做:在本地修复您的历史记录并强制将其推送到存储库。
使用git rebase -i
轻松更改本地历史记录。 不幸的是,您的存储库的根提交会更棘手。 请参阅使用Git更改项目的第一次提交? 了解详情。
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
链接地址: http://www.djcxy.com/p/49883.html