7 :git tool

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次提交,即要修改提交的父提交
相關文章
相關標籤/搜索