Git 提交歷史紀錄指令
修改之前的提交和訊息
$ git commit --amend
新增--amend
選項來覆蓋您正在處理的分支的最新提交。
當索引中沒有檔案時,您可以透過新增--amend
選項重新提交之前的提交,系 統將提示您編輯現有的提交訊息。
請參考:
修改並移動過去的提交和訊息
$ git rebase -i <commit>
新增提交哈希,將列出直到最新提交的所有提交的清單。找到您要修改的提交,並將該行從pick
更改為edit
,然後儲存並退出。
接下來,新增--amend
選項來提交。將顯示用於新增訊息的畫面。修改訊息。
$ git commit --amend
最後,新增--continue
選項來運行 rebase。
$ git rebase --continue
請參考:
退出變基
$ git rebase --abort
透過新增--abort
選項,您可以退出變基操作。
顯示參考日誌
$ git reflog
reflog
指令允許您查看 HEAD
過去用來指示的提交清單。
08084a5 HEAD@{0}: commit: append description of the pull command
99daed2 HEAD@{1}: commit: append description of the commit command
48eec1d HEAD@{2}: checkout: moving from main to issue1
326fc9f HEAD@{3}: commit: append description of the add command
48eec1d HEAD@{4}: commit (initial): first commit
將顯示由 rebase
收集的已刪除和成功的提交。
顯示分支提示的參考日誌
$ git reflog <ref>
這將顯示每次提示的提交清單 <ref>
已經改變,類似於下面。
445e0ae issue1@{0}: commit (merge): Merge branch 'main' into issue1
1c904bd issue1@{1}: commit (amend): modify description of the pull command
08084a5 issue1@{2}: commit: append description of the pull command
99daed2 issue1@{3}: commit: append description of the commit command
48eec1d issue1@{4}: branch: Created from 48eec1ddf73a7fb508ef664efd6b3d873631742f
我們可以看到已刪除和現有提交的 rebase
歷史紀錄。
移除以前的提交
$ git reset --hard HEAD~
請參考:
重設變基
$ git reset --hard <commit>
使用 reflog 指令在變基之前檢視提交。確定提交哈希值,或者在變基前發生提交的[HEAD@{number}]
的值。在此範例中,71bdfbd
和 HEAD@{4}
是提交的引用。
a51f8d2 HEAD@{0}: rebase -i (finish): returning to refs/heads/dev
a51f8d2 HEAD@{1}: rebase -i (squash): update 1
3a273e1 HEAD@{2}: rebase -i (squash): updating HEAD
f55ef69 HEAD@{3}: checkout: moving from dev to f55ef69
71bdfbd HEAD@{4}: commit: update 2
f55ef69 HEAD@{5}: commit (amend): update 1
在執行重設指令時,將哈希值(71bdfbd
和 HEAD@{4}
)新增到<commit>
。
分支的頭的位置現在將移動到執行變基之前的提交。現在分支的狀態將與執行變基之前的狀態相同。
取消之前的重設
$ git reset --hard ORIG_HEAD
ORIG_HEAD
指的是重設發生之前的提交。您可以使用 reset to ORIG_HEAD
恢復之前的重設。
從另一個分支複製提交
$ git cherry-pick "<commit>"
由其哈希標識的提交將被複製到目前分支。
請參考:
搜尋提交訊息
$ git log --grep "<pattern>"
顯示用 <pattern>
指定的文本的提交。