git改变历史
来源:互联网 发布:华硕超频软件 编辑:程序博客网 时间:2024/04/30 18:20
一、悔棋
对最近一次提交修改
对刚刚进行的一次或几次提交进行修改或撤销。
1、查看当前版本库的最新两次提交
2、修改最新提交的说明
3、查看修改后的记录:
4、修补提交:最近一次的操作是移动文件时,将原始文件welcome.txt删除了,现在恢复,被重新放回到暂存区了。但是工作区还是有README文件的:
5、对最新的提交进行修补
6、查看最近的2次提交日志:
多步悔棋
多次提交合并
可以取消最新连续的多次提交。多次提交合并为一个完整的提交。
1、查看版本库最近的三次提交
将最近的两次提交压缩为一个,并修改提交说明:
1、使用–soft 参数调用重置命令,回到最近两次提交之前:
2、查看版本状态和最新的日志(该日志是回到前2步后的日志):
3、执行提交操作,即完成最新两个提交压缩为一个提交操作:
4、查看提交日志
不能直接修改任意处的提交说明,会导致新的提交说明。只能提交合并了。
回到未来:对于历史提交,如果更改其中的一个提交(抛弃提交或合并提交),都会使后续提交发生连锁反应。因为后续提交中都有一个属性是parent的哈希值。
1、查看历史提交
2、先把历史提交做一个标记:
3、查看被标记的日志
任务:将标记为D的提交取消,或者与标记为C的提交合并。
以下是第一种情况:抛弃D提交
1、首先,将HEAD指针切换到C,也就是D的父提交,此时处于非跟踪状态(与master不一致)
2、将标记为E提交在当前HEAD(也就是标记C)上重放,其中master^与标记E指向同一提交 E。
3、将标记为F提交在当前HEAD(也就是标记E)上重放,其中master与F指向同一提交F:
4、查看日志,发现D提交不见了,而且最近的两次提交哈希值也不同:
5、查看最近的两次提交:
6、将master分支重置到新的提交上。要先切换到master分支:
7、查看分支图:
在抛弃D操作之前,工作区的文件:
执行抛弃D操作之后,工作区的文件:
而且暂存区也没有,完全丢失了:
以上都是抛弃D提交的操作,现在恢复原始的样子,
执行CD提交合并操作:
1、恢复初始状态,在master分支上执行:
2、将HEAD头指针换换到D(也就是要被合并的提交)
3、后退两步,以便C和D融合,此时HEAD指向B:
4、重新执行提交,提交说明重用C提交的提交说明:
5、将E提交在当前HEAD上重放:
6、将F提交在当前HEAD上重放:
7、查看日志,发现看不见C的标签:
8、将master分支指向最新的提交,先切回到master;
9、查看分支图:
10、重新恢复:
丢弃历史
最早的历史可能不希望也没有必要继续保存,需要抛弃部分早期历史提交的精简版本库用于和他人共享。
假设希望把里程碑C之前的历史提交全部清除,
1、查看里程碑C指向的目录树
2、直接从该目录树创建提交
3、查看提交,发现这个提交没有历史,也就是没有parent:
4、将master分支上里程碑C之后的提交变基到新的根提交上:
5、查看日志,当前master分支已经精简了
6、虽然提交精简了,但是本地文件并没有变化:
- git改变历史
- Git权威指南--改变历史
- Git学习笔记(十) 改变历史
- Git学习笔记(十) 改变历史
- git总结(4)改变历史,克隆
- Git 历史
- 改变历史的新经济
- 灾难改变历史
- 【git】git修改历史提交
- 01-- git历史--git学习
- Git 修改历史提交
- git修改历史提交
- git查看文件历史
- git 查看提交历史
- git查找历史代码
- git 获取历史版本
- git - 查看提交历史
- Git 查看修改历史
- 医院CRM管理
- 前端开发的45个经典技巧
- [实验]xss dvwa
- 算法基础_8大经典排序算法实现回顾
- 加密解密
- git改变历史
- [蓝桥杯官网测试题] 入门训练
- Q91:真实地模拟透明材质(Realistic Transparency)
- 经典排序算法
- Codeforces 599C Day at the Beach【思维+优先队列】
- js基础10-应用案例
- 替罪羊树 板子
- C++编译与链接
- linux进入一个目录以及在目录中创建文件所需要的权限