適用場景:
比方說,你的代碼已經提交到 git 庫,leader 審核的時候發現有個 Java 文件代碼有點問題,於是讓你修改,通常有 2 種方法:
方法1:leader 將你提交的所有代碼 abandon 掉,然後你回去 通過 git reset … 將代碼回退到你代碼提交之前的版本,然後你修改出問題的 Java 文件,然後:
git add xx.java xxx.java -s -m "Porject: 1.修改bug…"最後通過:
git push origin HEAD:refs/for/branches方法2:leader 不 abandon 代碼,你回去之後,修改出問題的 Java 文件,修改好之後,git add 該出問題.java
然後
git commit –-amend –-no-edit最後
git push origin HEAD:refs/for/branches當我們想要對上一次的提交進行修改時,我們可以使用 git commit –-amend 命令。git commit –-amend既可以對上次提交的內容進行修改,也可以修改提交說明。
舉個例子:
Step1:我們先在工作區中創建兩個文件 a.txt 和 b.txt,並且 add 到暫存區,然後執行提交操作;
Step2:此時我們查看一下我們的提交日誌, 可以看到我們的提交日誌中顯示最新提交有兩個文件被改變;
Step3:此時我們發覺我們忘了創建文件 c.txt,而我們認為 c.txt 應該和 a.txt, b.txt 一同提交,而且 a.txt 文件中應該有內容 'a'。於是我們在工作區中創建 c.txt,並 add 到暫存區。並且修改 a.txt(故意寫錯語法且沒有將 a.txt 的修改 add 到暫存區);
Step4:我們查看一下此時的提交日誌,可以看到上次的提交 0c35a 不見了,並且新的提交 11225 號就是上次提交的修補提交,它就像是在上次提交被無視了,修改後重新進行提交了一樣;
Step5:此時我們發現 a.txt 文件修改沒有成功,於是我們還得進行一次對 a.txt 的修改,將 a.txt add 到 stage,然後再執行一次與上一次類似的提交修補。
OK 了,git commit –-amend 的用法大致就是這樣。
總結:git commit --amend 相當於上次提交錯誤的信息被覆蓋了,gitk 圖形化界面上看不到上次提交的信息,git log 上也看不到之前的信息,而 add 後再 commit 相當於重新加了一個信息,相當於打了個補丁。
作者:shadow雨軒
原文連結:https://www.jianshu.com/p/a8a2ac58f37d
推薦閱讀
去BAT,你應該要看一看的面試經驗總結
程式設計師面試如何與HR談薪?
歡迎關注公眾號『easyserverdev』,本公眾號推崇基礎學習與原理理解,不談大而空的架構與技術術語,分享接地氣的伺服器開發實戰技巧與項目經驗,實實在在分享可用於實際編碼的編程知識。如果對後端開發感興趣,想加入 高性能伺服器開發微信交流群 進行交流,可以先加我微信 easy_coder,備註"加微信群",我拉你入群,備註不對不加哦。