Git修改已提交和Push的用户名 How to change the git commit author
一、Change last commit author
创建一个 amend 提交,重写作者
1 | # git commit --amend --author="<name> <email>" --no-edit |
然后再强制 Push 即可
1 | git push --force <repository> <branch> |
或者更安全的强制推送
1 | git push --force-with-lease <repository> <branch> |
或者新的分支
1 | git push <repository> +<branch> |
二、Change more than a commit
先git log
查看提交 hash,就是 commit-id
1 | git log |
然后 rebase 到当前要修改位置的上一个 previous-commit-id
1 | # git rebase -i -p <previous-commit-id> |
然后也会看到有提示
1 | # Commands: |
此时,我们把提交 Pick 出来,直接p
进入编辑状态
然后就是一个类似于 VIM 的编辑状态,基本命令如下
1 | i: Enter to insert mode |
接下来修改当前提交
1 | git commit --amend --author="XXX <xxx@abc.com>" --no-edit |
再继续下一个
1 | git rebase --continue |
再提交
1 | git push origin <branch-name> |
或者强制提交
1 | git push -f origin <branch-name> |
二、Gitlab 时 push 不上去的问题
如果是 Gitlab 的服务器,在 Push 的时候可能会有保护的问题
1 | Git push error pre-receive hook declined |
解决办法
进入 Gitlab 后台,进入当前工程
Setting
=>Repository
=>Protected Branches
点击展开
Expand
后,会有一个Protect a branch
的设置选择好分支的权限组后,再打开
Allowed to force push
点击按钮
Protect
此时会在下面弹出一个询问,选择
UnProtect
然后再客户端重新 push 即可
三、参考
https://dev.to/brayanarrieta/how-to-change-the-git-commit-author-56mg
有人在 github 重新写了一个 sh 脚本,可以直接使用
https://github.com/MichaelCurrin/rewrite-git-author
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 一只大菜狗!