Git批量修改提交历史

    有些时候我们可能需要批量修改提交历史,当然了,最近一次的提交历史很简单我们可以利用

git commit --amend

来进行最近一次提交的修改,如果你此时想要更新作者提交时间等也可以在amend之后加上 --date="$(date -R)"

   但是很多时候我们需要更改的往往不是一条两条提交信息,有些时候需要批量更改提交历史,这个时候我们就可以用到git rebase -i(--interactive)这个选项了。

    首先第一步,你需要确定你需要更改历史的范围,比如A-B-C-D,你此时HEAD在D,你想修改B和C的历史,那这个时候你需要用到如下命令

git rebase --i HEAD~2

这个时候,Git会弹出一个对话框里面会写如下提示,例如

pick 54d5ef0 test2
pick 63d5ef0 test1

默认情况下的pick表示此时你认同这段提交,里面可以更改的选项有edit(e),reword(r)等,其中最重要的两个就是这个,前者表示你可以修改提交历史乃至进行相关文件的state区的修改,类似git commit --amend,后者比前者稍微弱一点,仅仅让你改写提交信息,这里面你可以自己作为判断。

    举个简单的例子,比如我们想更改B,C,D的作者时间,我们可以依次输入以下命令

git rebase -i HEAD~2

# 将A,B,C对应的pick修改为edit之后

git commit --amend --date="$(date -R)"

git rebase --continue


依次输入直到B,C,D都满足之后,这个时候你再查看git log,你会发现Git的作者历史时间已经被你批量修改成功了。

    希望这篇文章可以帮到你,领略和学习Git的强大之处~

 

参考链接:  http://stackoverflow.com/questions/454734/how-can-one-change-the-timestamp-of-an-old-commit-in-git

                 http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/zh_cn/ch05.html

                 http://bbs.csdn.net/topics/380207612

              http://blog.csdn.net/transformer_han/article/details/7082767

posted @ 2014-09-19 11:34  Ricky.K  阅读(3119)  评论(2编辑  收藏  举报