您的位置:首页 > 其它

git_修改git历史提交记录

2016-05-17 16:22 295 查看
本修改仅限于修改本地的提交,提交的远程的请勿修改,以防引起开发者混乱。

首先执行 git rebase -i HEAD~3 这里首先rebase到HEAD~3的提交,这是你可以修改HEAD~2 - HEAD之间的提交。

此时,git为你提供一个编辑列表,如下:

pick f7f3f6d changed my name a bit

pick 310154e updated README formatting and added blame

pick a5f4a0d added cat-file

如下边的提示所说,你可以修改前边的pick,改成edit,表示退出后,git会在那次提交后停下来等待你的进一步修改。此时你可以执行git commit --amend去修改那次提交的注释。或者你可以git reset HEAD^,去撤销那次提交,然后做系列的改动并提交,这样相当于把那次提交拆分成多次提交。然后需要执行 git rebase --continue执行剩下的有pick标记的提交。

你也可以改成squash,表示把所有连续的标记有squash提交与这些行的最上边的那次pick标记的提交合并成一个提交,退出后修改提交说明即可。

你也可以删除某些行,或者颠倒某些行的顺序,表示你要上出那次提交或者颠倒那些提交的顺序。

/*****************************************************/

如果你想批量处理当前branch的所有提交,你可以用git filter-branch命令,该命令会在当前分支的所有提交上上执行参数所描述的操作。如果你要在所有分支的所有提交上执行,可以在后边加上--all选项。

比如,你想在当前分支上的所有提交上山删除一个你不小心提交的密码文件。你可以执行git filter-branch --tree-filter 'rm -f password.txt' HEAD.

另比如,你想修改你的邮箱为新的邮箱,可如下:

git filter-branch --commit-filter '

if [ "$GIT_AUTHOR_EMAIL" = "oldemail@localhost" ];

then

GIT_AUTHOR_NAME="new name";

GIT_AUTHOR_EMAIL="new email@example.com";

git commit-tree "$@";

else

git commit-tree "$@";

fi' HEAD
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: