Git歪果仁

来源:互联网 发布:php 判断小数 编辑:程序博客网 时间:2024/04/28 12:45

一、目标

本博文中介绍的git操作要达到的目标为:使用同一分支,回滚到之前的某一历史版本A,但是在该分支上再次提交时,还保留从该历史版本A到当前版本的所有提交历史。

例如分支master有如下提交历史commit 1—> commit 2—>commit 3:
这里写图片描述
要达到的目标为:回滚到commit 1,在该分支上继续提交时,还要保存commit 2和commit 3的提交历史,也即再次提交时,提交历史为:
commit 1—> commit 2—>commit 3—>commit 4

二、具体操作

1、在commit 3时切出新分支b2,使用git log查看分支b2的提交历史和master的提交历史一致:
这里写图片描述
2、此时,在b2分支中回滚到commit 1,在文件管理器中进入到工程的根目录中,拷贝出除.git目录外的所有文件,放到桌面上。
3、切回到master分支,删除除.git外的所有文件,并把上一步中拷贝出的所有文件拷贝回工程的根目录中,此时正常提交即可。
4、使用git log查看master的提交历史如下:
这里写图片描述
但是此时,commit 4下所有的文件内容均和commit 1下所有的文件内容一致,也即达到了本文开头处的目标。
达到目标后,删除分支b2即可。

注意

  1. 第2步和第3步是整个操作的关键。
  2. 在master分支上并没有真正的执行回滚,只是达到了类似回滚的效果,但是在分支b2上执行了真正的回滚。
  3. 本文中介绍的方法为git的非正常使用方法,请谨慎使用。
原创粉丝点击