git commit --amend命令用來修復最近一次commit. 可以讓你合並你緩存區的修改和上一次commit, 而不是提交一個新的快照. 還可以用來編輯上一次的commit描述.
記住amend不是修改最近一次commit, 而是整個替換掉他. 對於Git來說是一個新的commit.
用法
git commit --amend
合並緩存區的修改和最近的一次commit, 然后用生成的新的commit替換掉老的. 如果緩存區沒有內容, 那么利用amend可以修改上一次commit的描述.
討論
開發過程中很容易忘記stage某個文件或填寫了不夠准確的commit描述. --amend就是用來fix這些錯誤的.
不要對一個公共的commit使用amend
amend后生成的commit是一個全新的commit, 之前的老的commit會從項目歷史中被刪除. 如果你amend了一個被其他開發者使用的commit, 會嚴重影響其他開發者.
例子
下面的例子我們添加一個文件, 然后單獨把它commit到HEAD里面, 然后發現這次commit少包括了一個文件. 然后我們使用--amend解決這個問題.
# Edit hello.py and main.py git add hello.py git commit # Realize you forgot to add the changes from main.py git add main.py git commit --amend --no-edit
編輯器的默認描述會是上一次commit的描述, --no-edit能讓我們修復commit,而且不要修改commit描述.