正文
雖然說就再做一次 commit 就好,但有時會覺得這明明是之前那個 commit 應該做的事情,
為了想保持同一個 commit 的完整性,不想再做一次 commit 這樣,也是可以辦到。
我記得上次改內部系統的一個程式,提交後才發現有個檔案沒複製過去,
但是上一個 commit 內容已經有寫到這件事了,所以就會有這個需求。
至少有兩種方式:
- 使用 git reset 把最後一次的 commit 拆掉再加入檔案後重新 commit 一次
- 使用 --amend 參數進行 commit
第一種還是以後再說,先介紹第二種方式好了。
我們現在用 git bash 的指令複製一個檔案過來當作是新增的檔案
$ cp /d/test.py .
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.py
nothing added to commit but untracked files present (use "git add" to track)
檔案加進來了但還沒有被 git 追蹤到(Untracked files),那就先加到暫存區吧
$ git add .
接著用 --amend
參數來 commit
$ git commit --amend --no-edit
[master 25c6264] 將 welcome.txt 更名為 hello.txt
Date: Sun Feb 23 22:30:28 2020 +0800
2 files changed, 35 insertions(+)
rename welcome.txt => hello.txt (100%)
create mode 100644 test.py
如果覺得 commit 內容也要跟著改,那就不要使用 --no-edit
參數,
而是用上一節的方式來編輯提交訊息。
補充
如果有使用遠端倉庫,做這個動作後 push 上去都會發生錯誤,
目前我的做法是本地端做好後先從遠端倉庫把資料 pull 回來讓他自動 merge 接著再直接 push 回去,
這樣就會多一筆 merge 的 log 紀錄,目前先這樣處理,之後再看看有什麼更好的方式。
關於遠端倉庫,之後會說。