分割线下面的是我之前的错误处理办法, 这里更新下:
git 支持重写历史, 可能大家常用的是git rebase这个修改近期的commit可能比较方便, 但是当你想修改所有历史时就需要用到filter-branch了
比如修改所有commit中的邮箱地址:
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "xxxxx@localhost" ];
then
GIT_AUTHOR_NAME="new name";
GIT_AUTHOR_EMAIL="newemail@example.com";
git commit-tree "$@";
else
git commit-tree "$@";
fi'
HEAD
这样就能改变历史所有commit了
---------------------------------------------------------------------------------------------------------------
首先,清空所有记录意味着破坏git的原有commit 记录, 分支等 非极端情况请勿做此操作.
当出现个人维护项目想要清空所有提交从零开始, 或者像我一样从github上clone项目忘了重新git init然后直接推到自己的远程仓库, 结果发现里面全是原作者的commit记录时才不得已作此操作.
具体操作很简单:
1. 删除本地.git文件本地项目文件下 rm -rf .git
2. git init
3. git add . && git commit -"重新推项目""
4. git push -f -u origin master 在此步骤如果你的远程仓库设置了禁止删除分支, 会出现"PUSH REJECTED BY EVIL DRAGON BUREAUCRATS" 并出现火龙图案, 此时你要联系远程仓库管理员修改远程仓库设置了,修改完重复4就OK了.
再次申明这是极端情况下的方案, 正常情况请勿尝试.