← 上一章:【狀況題】修改 Commit 紀錄 下一章:【狀況題】新增目錄? →


【狀況題】追加檔案到最近一次的 Commit

剛剛完成 Commit,但發現有一個檔案忘了加到,又不想為了這個檔案重新再發一次 Commit…

像上述這個情況,雖然為了這個單一檔案再加送一次 Commit 也不是不行,但有些人有 Commit 的潔癖(例如我),希望每個 Commit 不要太大也不要太小,就剛剛好做到這個 Commit 應該做的事就好。所以如果不想因此再發一次 Commit,想把這個檔案併入最近一次 Commit,可以這樣做:

  1. 使用 git reset 把最後一次的 Commit 拆掉,加入新檔案後再重新 Commit。
  2. 使用 --amend 參數進行 Commit。

這裡先介紹第二種方式,第一種方式會在「 【狀況題】剛才的 Commit 後悔了,想要撤掉重做…」章節進行說明。

例如,我有一個檔案叫做 cinderella.html,想把它加到最後一次的 Commit 裡:

$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

  cinderella.html

nothing added to commit but untracked files present (use "git add" to track)

假設它剛加進來,它的狀態還是 Untracked。流程上一樣,還是使用 git add 先把檔案加到暫存區:

$ git add cinderella.html

接著在 Commit 的時候加上 --amend 參數:

$ git commit --amend --no-edit
[master 3128d00] update story
Date: Wed Aug 16 05:42:56 2017 +0800
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 cinderella.html
create mode 100644 config/database.yml

這樣就可以把檔案併入最後一次的 Commit。而最後面那個 --no-edit 參數的意思是指「我不要編輯 Commit 訊息」,所以就不會跳出 Vim 編輯器的視窗。

如果使用 SourceTree,一樣也是先把 cinderella.html 檔案勾選至暫存區,在 Commit 的時候,右下角的下拉選單有一個「Amend last commit」選項

Amend

Commit 訊息要改不改都可,按下右下角按鈕後就會完成 Commit,這個檔案就會被併到最近的一次 Commit 裡了。

修改歷史

跟前個章節一樣的提醒,像這樣的修改歷史,請儘量不要使用在已經 Push 出去的 Commit 上。


← 上一章:【狀況題】修改 Commit 紀錄 下一章:【狀況題】新增目錄? →

Comments