7.6重写历史
- 你想修订提交历史
- 你可在提交暂存区以前決定哪些文件纳入哪些提交
- stash决定暂时搁置的工做
- 可重写已经完成的提交,使其呈现出另外一种完成方式
- 这些涉及改变提交次序
- 修改提交中
- 包含的信息或文件,压缩、拆分、彻底删除提交
- 这一切均可以在你还没有同他人共享工做成果以前进行
- 学习到如何完成这些有用的任务
- 以便在与他人共享提交历史以前可以将其修改为须要的样子
7.6.1修改最近一次提交
- 你常常会对最近一次提交作两件事:
- 修改提交消息
- 或是修改因为文件添加、改动、删除所记录下的快照。
- 只想修改最近的提交消息,执行如下命令便可。
git commit --amendgit
- 这条命令打开编辑器并在其中显示最近的提交消息,以供修改。
- 保存并关『闭编辑器后】
个人是直接在git bash里出来相似vim的东西呦西!vim
- 编辑器会写入一个包含已修改信息的提交,并将其做为你最近的提交
- 若是你已完成提交
- 但提交时忘记加入一个新建立文件
- 但愿能经过添加或更改文件来修改所提交的快照
- 也可经过相似操做完成
- 你可经过修改文件来暂存所需改动
- 而后对其用git add,或对一个已跟踪的文件使用git rm
- 随后git commit --amend会获取你当前的暂存区并将它做为新提交的快照
- 当心用这种用法
- 修正会改变提交的SHA-1值
- 像是一次微型变基
- 不要在已经推送了最近一次提交以后还去修正它
不要在push到远程以后还去修改它是这个意思吧!bash
本大王以为奇怪的现象
- 好比我这个仓库本地commit啦!
- 而后push到远程啦
- 这个时候你在本地想要修改本地的commit内容
- 而后git commit --amend
- 竟然还和远程的分叉了,我草你妈的啥意思啊
- 但是若是我本地改了
- 本地commit了
- 尚未push到远程
- 这个时候你能够用git commit --amend修改
- 而后再搞到远程,就不分叉啦!
7.6.2修改多个提交消息
- 要修改历史记录中较早的提交,须用复杂工具
- Git没有历史记录修改工具
- 但可用变基工具将一系列的提交
- 変基到它们原来所在的HEAD上,
- 而不用移动到新位置
- 但可用变基工具将一系列的提交
- 借助交互式的变基工具
- 可在每一个想要修改的提交后停下,
- 而后改变提交消息、添加文件或是作任何想作的事
- git base的-i
- 可将你带入変基命令的交互模式
- 须经过告知命令须要变基到哪次提交来代表但愿重写多久远的提交
- 想改变最近3次或其中任意一次的提交消息
- 须要将待修改的最近一次提交的父提交做为参数提供给
- git rebase -i,也就是HEAD~2^或HEAD~3
- ~3更易记,
- 要修改的是最近3次提交
- 须要将待修改的最近一次提交的父提交做为参数提供给
- 你实际上指定了以前4次提交,即要修改提交的父提交