Skip to main content
  1. Learn
  2. Software Development
  3. Guides
  4. Git tutorial
  5. Git 的指令和設定
  6. Git 提交歷史紀錄指令
GuidesSoftware DevelopmentBacklog
Git

Project and code management together.

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}]的值。在此範例中,71bdfbdHEAD@{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

在執行重設指令時,將哈希值(71bdfbdHEAD@{4})新增到<commit>

分支的頭的位置現在將移動到執行變基之前的提交。現在分支的狀態將與執行變基之前的狀態相同。

取消之前的重設

$ git reset --hard ORIG_HEAD

ORIG_HEAD 指的是重設發生之前的提交。您可以使用 reset to ORIG_HEAD 恢復之前的重設。

從另一個分支複製提交

$ git cherry-pick "<commit>"

由其哈希標識的提交將被複製到目前分支。

請參考:

搜尋提交訊息

$ git log --grep "<pattern>"

顯示用 <pattern> 指定的文本的提交。

Subscribe to our newsletter

Learn with Nulab to bring your best ideas to life