git commit --amend 用法

2021-03-02 高性能伺服器開發

適用場景:

比方說,你的代碼已經提交到 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,備註"加微信群",我拉你入群,備註不對不加哦。


相關焦點

  • Git 你也許遇到過Commit操作這些問題!
    🤞 個人主頁:@青Cheng序員石頭🤞 粉絲福利:加粉絲群 一對一問題解答,獲取免費的豐富簡歷模板
  • 這份Git 高級用法小抄,掌握起來!
    請注意我有意跳過了 git commit、git pull/push 之類的基本命令,這份小抄的主題是 git 的一些「高級」用法。>  定製提交# 編輯上次提交git commit --amend -m "更好的提交日誌"# 在上次提交中附加一些內容,保持提交日誌不變git add .
  • 熟悉Git使用的一些實操練習命令
    3.交互式撤銷選定文件部分git checkout -p--patch還可用於選擇性地丟棄以已經暫存文件的變化的。4.修改最近的commit信息git commit --amend--amend允許將緩存區的變化添加到之前的commit。
  • git ammend知識點小結
    當我們出現這些需求場景的時候,可以考慮使用git commit --amend來實現1. 修改提交文案git commit --amendgit rebase --continue修改提交Name/Email通常使用git commit --amend來修改提交文案的場景更多,但是某些場景下可能需要修改Author信息,比如不小心在自己的github項目中使用了公司的郵箱,這個時候如果我們需要修改,同樣可以使用上面這個命令來做git commit --amend -
  • 深入git rebase使用
    讓我們在rebase-repo中增加一個文件,但是commit信息有問題:echo "Hello Chongchong" > one.txtgit add one.txtgit commit -m "添加Hello"修改commit非常簡單,只需使用"—amend"選項就可以。
  • Git cherry-pick 這個命令你會經常用到!
    用法git cherry-pick [<options>] <commit-ish>...commit'當cherry-pick時,沒有成功自動提交,這說明存在衝突,因此首先需要解決衝突,解決衝突後需要git commit手動進行提交:$ git commit[branch1 790f431] [Description]:branch2 commit
  • git基本用法和log查看
    每次我們add後有段文字提示 (use "git reset HEAD <file>……" to unstage)直接git reset HEAD file恢復add之前的狀態git commit命令git commit -m 'message' 最常用的提交命令。
  • git別名提高全棧開發效率
    添加和修改提交gaagit add -A添加所有改變的文件到暫存區。gcmgit commit -m提交暫存區的文件,包括一個提交的信息。舉例:gcm "這是我的提交描述"gcmagit commit -a -m添加文件到暫存區而且進行提交,包括一個提交的信息。
  • 手寫 git hooks 腳本(pre-commit、commit-msg)
    Git 在執行 git init 進行初始化時,會在 .git/hooks 目錄生成一系列的 hooks 腳本:從上圖可以看到每個腳本的後綴都是以 .sample 結尾的,在這個時候,腳本是不會自動執行的。我們需要把後綴去掉之後才會生效,即將 pre-commit.sample 變成 pre-commit 才會起作用。
  • Git命令的用法小結
    # 顯示某些文件已修改,哪些文件已準備提交等信息$ git status# 了解git status的更多用法$ git help status添加 (add)將文件加入緩存區--depth表示克隆的最近版本數$ git clone --depth 1 URI路徑提交(commit)將緩存區(Index)中的內容提交到git倉庫中# 提交時填寫說明(message)$ git
  • Git 的奇技淫巧
    的方式還原某一個 commit 的修改git revert <commit-id>回到某個 commit 的狀態,並刪除後面的 commit和 revert 的區別:reset 命令會抹去某個 commit id 之後的所有 commitgit reset <commit-id
  • Oh Shit, Git!?!
    # 繼續改動你的文件git add . # 或者你可以添加指定的文件git commit --amend --no-edit# 你這次的改動會被添加進最近一次的 commit 中# 警告: 千萬別對公共的 commit 做這種操作這經常發生在我提交了 commit 以後立馬發現,媽蛋,我忘了在某個等號後面加空格了。
  • 如何規範你的Git commit?
    根據以上規範git commit message將是如下的格式:fix(DAO):用戶查詢缺少username屬性 feat(Controller):用戶查詢接口開發以上就是我們梳理的git commit規範,那麼我們這樣規範git commit到底有哪些好處呢?
  • Git commit message規範
    全局安裝commitizen & cz-conventional-changelogcommitizen是一個撰寫合格commit message的工具,用於代替git commit 指令,而cz-conventional-changelog適配器提供conventional-changelog標準(約定式提交標準)。基於不同需求,也可以使用不同適配器。
  • 你應該知道的10個Git命令(附連結)
    · git checkoutmy_commit——放棄自my_commit以來的非分段更改。這是checkout命令的更常見用法。· gitrevert my_commit ——撤消my_commit中更改的效果。當撤消更改時,revert會進行新的提交。
  • Git命令大全
    git commit --amend重新提交,最終只會有一個提交,第二次提交將 代替 第一次提交的結果。尤其適用於提交完了才發現漏掉了幾個文件沒有添加,或者提交信息寫錯了的情況。git commit --amend --reset-author在上一次 commit 之後想重新更新一下時間。amend 實際上修改了上一個 commit。所以如果已經 push 了上一個 commit,請儘量不要 amend。
  • 超強 Git 使用規範流程!
    $ git add --all$ git status$ git commit --verbosegit add 命令的all參數,表示保存所有變化(包括新建、修改和刪除)。從Git 2.0開始,all是 git add 的默認參數,所以也可以用 git add . 代替。git status 命令,用來查看發生變動的文件。git commit 命令的verbose參數,會列出 diff 的結果。
  • 這 10 幾個,高級開發用的 Git 命令,個個驚豔!
    如果你覺得 git 很迷惑人,那麼這份小抄正是為你準備的!請注意我有意跳過了 git commit、git pull/push 之類的基本命令,這份小抄的主題是 git 的一些「高級」用法。>git commit --amend -m "更好的提交日誌"# 在上次提交中附加一些內容,保持提交日誌不變git add .
  • 詳細介紹下git中的多種撤銷
    命令:git revert原理:git revert 會產生一個新的 commit,它和指定需要撤銷的 commit的SHA 是相反的。git commit的時候,發現 commit的信息寫錯了。例如:你在本地執行了 git commit -m "comment5",但是一個單詞拼寫錯誤了,其實應該是 「commit5″。
  • 【譯】How to Write a Git Commit Message
    commit message的內容應該包含何種信息,不應該包含何種信息。元數據。 issue 的ID, pull request的數字應該怎麼記錄,索引等等。幸運的是,有一些完善的慣例指導我們寫 git commit 信息。當然,很多都是用git命令來解決的。你不需要重新造輪子。遵循下面的七條準則,你就可以像專業人士一樣commit了。