修改commit


這個文章有點亂,留給本身看吧!git


1. 修改提交信息

1.1 git rebase -i 修改某次提交信息

命令語法:bash

git rebase -i 某次提交前一次commitId
複製代碼

修改倒數第二次提交 feature/b 倒數第三次提交 變爲 feature/b 倒數第二次提交spa


1.2 修改最後一次提交

最後一次提交信息,可使用比較簡單操做3d

1.2.1 提交 commit 信息的有錯別字,😂code

git commit --amend --no-edit
複製代碼


1.2.2 提交時,發現代碼少寫或多寫了。想修改提交,保持上次提交信息cdn

git add .
git commit --amend # 進入 commit 編輯,但只需:wq
複製代碼


這一步驟,也可利用 git reset 回滾代碼來操做,不過那樣子太複雜了。blog

2. git reset 代碼回滾

這兩個只是代碼回滾,可是可變相理解,撤回最後一次說起,後的 commit 信息修改。開發

說到git reset 就不得說一下revert,這兩種命令區別以下:文檔

  • git revert 原有的 commit 保留,並會多一條 Revert 的commitit

  • git reset 撤銷原有的 commit,修改代碼並提交後,就得 git push -f 進行強推遠程

經常使用命令語法:

# revert
git revert head~count # 回滾最後 count 次提交
git revert commitId # 回滾到某次的 commit 提交
# reset 
git revert head~count # 回滾最後 count 次提交
git revert commitId # 回滾到某次的 commit 提交複製代碼

2.1 多我的在同一個分支開發(先說明這點作法是不合理,但總會有歷史緣由😂,出現這種狀況),讓別人知道你的代碼回滾,不影響別人commit,使用 git revert ,好處在於不強推。


2.2 代碼回滾,在不會影響到其餘人的時候,使用 git reset。

若是 git reset 後的代碼能夠保留在工做區,能夠修改在從新commit;若是想刪掉,直接 git checkout head .(不過這能夠簡化,git reset --hand,回滾後代碼不會保留);


git reset 操做細分有不少狀況,具體查文檔。

3. 當前分支合併其餘分支某次提交

遇到這種狀況,使用 git cherry-pick。以下圖,feature/a 合併 feature/b 倒數第二次提交
命令語法:

git cherry-pick commitId
複製代碼


4. 合併多個提交

4.1 git rebase -i

這個命令很強大,不單單只是合併多個提交,還能修改提交記錄。但最主要用它合併記錄。

命令語法:

git rebase -i 某次提交前一次commitId
複製代碼

以下圖,把 feature/b 分支倒數第一和第二合在一塊兒,變成倒數第一


4.2 使用 git reset 合併最後幾回提交

可使用git reset,以下圖,把 feature/b 分支最後兩次commit 合在一塊兒


使用這個緣由是比 git rebase 操做簡單

相關文章
相關標籤/搜索