我使用此脚本更改特定提交的作者:
#!/bin/sh
git filter-branch --env-filter '
NEW_NAME="MyName"
NEW_EMAIL="my-name@my-domain.com"
if [ "$GIT_COMMIT" = "afdkjh1231jkh123hk1j23" ]
then
export GIT_COMMITTER_NAME="$NEW_NAME"
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
export GIT_AUTHOR_NAME="$NEW_NAME"
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
来自Change commit author at one specific commit
在主repo上运行之后,所有提交都被重复使用不同的哈希并且提交哈希'afdkjh1231jkh123hk1j23'与另一个具有指定名称和电子邮件的哈希重复。我可以返回原始日志吗?
问题是:现在,在每次提交之后生成一个新的提交,并与之前的提交合并。
例如:
最后一次提交是601dd3a ...
运行脚本后
最后提交:
commit 1550a7c596...
Merge: 601dd3a 4c882eb
Author: MyName <my-name@my-domain.com>
Date: Sat Oct 14 17:59:09 2017 +0000
Merge branch 'master' of 14.235.21.116:/app
commit 4c882eb.. (this is copy of 601dd3a)
........
commit 601dd3a...
......
在生成新的pull之后,这个合并提交。它可以在将来被淘汰(用于新的提交)吗?
答案 0 :(得分:0)
每次上拉后,生成合并提交。
这是预期的,因为远程分支具有与您自己的本地宿主不同的历史(不同的SHA1)(由filter-branch
重写)
如果您更改提交(或提交作者姓名/电子邮件等元数据),则表示您应该push --force
并用您自己的替换远程历史记录。
如果你是唯一正在努力(推送)远程回购的人,这很容易做到
当你有多个协作者时,这并不容易,因为这意味着他们不拉(他们会获得与你拥有的相同类型的合并提交),但重置他们自己的本地repo到远程repo分支(因为该分支具有修订的历史记录)。