2013-03-20 113 views
1

假设我们有一个git提交历史看起来像:重写GIT中提交历史

ZZ [原点/主] A - >乙 - “ç - > d - > E [主]

我们希望:

  • 倒带历史回A之前。
  • 请保持工作目录E
  • A..E的所有更改集合合并为一个提交。
  • 将结果推送到远程。

结果应该是这样的:

ZZ - > XX [主] [原点/主]

其中XX是提交包含之前提交甲变化.. Ë

回答

3

你可以试试:

git reset --hard E 
git reset --soft ZZ 
git commit 'comment' 
git push orgin master 

--soft

不触及索引文件,也没有在所有的工作树(但重置头,只是likeall模式一样)。这会将所有更改的文件“更改为已提交”,因为git状态会起作用。

+0

快速,简单,优雅。谢谢。 – Kivin 2013-03-20 02:59:59

+0

@Kivin欢迎:) – pktangyue 2013-03-20 03:01:22