我已经重新基于一个分支,并且现在所有的提交都有提交者部分,我想彻底删除它(不仅仅是更改它的字段)。是否可以在不丢失原始作者信息的情况下实现?
我已经重新基于一个分支,并且现在所有的提交都有提交者部分,我想彻底删除它(不仅仅是更改它的字段)。是否可以在不丢失原始作者信息的情况下实现?
多亏了@sergej和GitHub,我成功地移除了提交者信息。
git filter-branch --env-filter '
if [ "$GIT_COMMITTER_EMAIL" != "$GIT_AUTHOR_EMAIL" ]; then
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
fi
' --tag-name-filter cat -- --branches --tags
你需要重新编写历史记录。
GitHub有一个脚本可以实现这个功能,详见更改作者信息。
将其调整为符合你需求应该很简单:
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
GIT_COMMITTER_NAME
等与GIT_AUTHOR_NAME
等匹配,那么它将被视为已删除? - Andreifilter-branch
会创建备份引用,这使他们以为命令没有起作用。他们似乎不愿承认错误,反而坚持投下了不合适的踩的票,而事实上答案是有效的。 - Mark Adelsberger