文章目录
- 7.6重写历史
-
- 7.6.1修改最近一次提交
-
- 本大王觉得奇怪的现象
- 7.6.2修改多个提交消息
7.6重写历史
- 你想修订提交历史
- 你可在提交暂存区之前決定哪些文件归入哪些提交
- stash决定暂时搁置的工作
- 可重写已经完成的提交,使其呈现出另一种完成方式
- 这些涉及改变提交次序
- 修改提交中
- 包含的信息或文件,压缩、拆分、完全删除提交
- 这一切都可以在你尚未同他人共享工作成果之前进行
- 学习到如何完成这些有用的任务
- 以便在与他人共享提交历史之前能够将其修改成需要的样子
7.6.1修改最近一次提交
- 你经常会对最近一次提交做两件事:
- 修改提交消息
- 或是修改由于文件添加、改动、删除所记录下的快照。
- 只想修改最近的提交消息,执行以下命令即可。
git commit --amend
- 这条命令打开编辑器并在其中显示最近的提交消息,以供修改。
- 保存并关『闭编辑器后】
我的是直接在git bash里出来类似vim的东西呦西!
- 编辑器会写入一个包含已修改信息的提交,并将其作为你最近的提交
- 如果你已完成提交
- 但提交时忘记加入一个新创建文件
- 希望能通过添加或更改文件来修改所提交的快照
- 也可通过类似操作完成
- 你可通过修改文件来暂存所需改动
- 然后对其用git add,或对一个已跟踪的文件使用git rm
- 随后git commit --amend会获取你当前的暂存区并将它作为新提交的快照
- 小心用这种用法
- 修正会改变提交的SHA-1值
- 像是一次微型变基
- 不要在已经推送了最近一次提交之后还去修正它
不要在push到远程之后还去修改它是这个意思吧!
本大王觉得奇怪的现象
- 比如我这个仓库本地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次提交,即要修改提交的父提交