Git-命令的使用

丟棄歷史

  • 如現有提交歷史: A->B->C->D->E->F,欲丟棄 C 以前的提交歷史使得歷史記錄變爲: C->D->E->F,則此時:git

    1. 基於 C 建立一個根提交,可使用 git commit-treeshell

    2. 將 D,E,F 變基到剛建立的根提交上.以下:spa

$ git log --oneline --decorate --graph  # 當前提交歷史
* fdc7fff (HEAD, tag: F, master) F
* d46f42d (tag: E) E
* 6501e33 (tag: D) D
* a0699ec (tag: C) C
* b97d344 (tag: B) B
* 7929c37 (tag: A) A
$ git commit-tree -m 'C' tags/C^{}^{tree} # 建立一個根提交
7b99fe372d8324172f88b814ff1bdffac97338b8
$ git rebase --onto 7b99fe372d8324 C F    # 執行變基操做.
首先,重置頭指針以便在上面重放您的工做...
正應用: D
正應用: E
正應用: F
$ git status    # 注意 git rebase 以後處於分離頭指針狀態.
# HEAD detached from 7b99fe3
nothing to commit, working directory clean
$ git checkout master   # 切換到 master.
警告: 您正丟下 4 個提交,未和任何分支關聯: 
  4eb1223 F
  c5d1c66 E
  9686a0e D
  7b99fe3 C
切換到分支 'master'
$ git reset --hard HEAD@{1} # 注意這一步.
$ git status 
# 位於分支 master
nothing to commit, working directory clean
$ git log --oneline --decorate --graph  # 成功刪除歷史
* 4eb1223 (HEAD, master) F
* c5d1c66 E
* 9686a0e D
* 7b99fe3 C
相關文章
相關標籤/搜索