7 :git tool

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次提交,即要修改提交的父提交

猜你喜欢

转载自blog.csdn.net/zhoutianzi12/article/details/109305559
今日推荐