img
情況一:最後一次提交且未 push
執行以下命令:
<code>gitcommit
/<code>
git 會打開 $EDITOR 編輯器,它會加載這次提交的日誌,這樣我們就可以在上面編輯,編輯後保存即完成此次的修改。
情況二:最後一次提交且已 push 到服務器
執行以下命令:
<code>gitcommit
git push originmaster
/<code>
和情況一的做法一樣。使用 push 推送到遠程服務器是需要加上 --force,讓服務器更新歷史記錄。
** 需要注意的是:把修改後的日誌強制 push 到 Git 服務器,如果別人本地的副本有修改,很有可能會導致他們同步不了,所以最好和他們核對下。**
情況三:舊的提交且未推送
假設 commit 是倒數第 3 次提交,這個可以使用 git log 查看,
<code>$
git
log
commit
b1b451d218cc23b6c769f373164f2b89cf54d0aa
Author:
clcaza
Date:
Sat
Mar
10
19
:09:08
2018
+0800
添加內容
d
commit
04f0d1809d5d31cc6e930efcba47a5f3f7e93319
Author:
clcaza
Date:
Sat
Mar
10
19
:08:24
2018
+0800
添加內容
c
commit
94fc8feb916442d56b558d5c370f18f057298921
Author:
clcaza
Date:
Sat
Mar
10
19
:07:08
2018
+0800
添加內容
a
commit
fd517efa9faf6a5ec71d0eac38fbcfa0cd689f40
Author:
clcaza
Date:
Sat
Mar
10
19
:06:21
2018
+0800
init
/<code>
執行 rebase
<code>git
rebase -i HEAD~3
/<code>
它會打開一個編輯器,它會把最後前 3 次的提交顯示出來,類似於:
<code>pick
94fc8fe 添加內容 a pick 04f0d18 添加內容 c pick b1b451d 添加內容 d/<code>
你會看到,它是按提交的順序顯示的,與 git log 顯示的順序相反。定位到你要編輯日誌的那一行,把 pick 修改為 edit,然後保存。
接著就是修改日誌內容了
<code>gitcommit
/<code>
完成編輯日誌後,記得執行:
<code>git rebase --continue
/<code>
Rebase 目的是打開提交的歷史記錄,讓您選擇要修改的內容。 Git 會讓你在一個新的分支修改內容。 git rebase --continue 則是讓你重新回到之前的分支。
情況四:舊的提交且已 push 到服務器
前面編輯日誌的操作是和情況三是一樣的:
<code>git rebase -i HEAD~X gitcommit
git rebase /<code>
X 表示倒數第幾次提交。
完成編輯日誌後,執行 push:
<code>git push origin master /<code>