在日常開發中,有時候我們提交了一些不想保留的記錄,比如測試代碼、錯誤的功能提交等。
?? 在操作 4. 強制推送到遠程倉庫前
的注意事項
強制推送(git push --force
或 git push -f
)確實很強大但也危險,因為它會重寫遠程倉庫歷史,可能影響他人協作或導致代碼丟失。以下是你強制推送前后的關鍵注意事項:
-
確保只有你在改這條分支
- 如果多人在同一個分支(如
dev
或main
)開發,強推很容易讓別人提交丟失。 - ? 建議只對自己的功能分支(如
feature/coupon
)強推。
- 如果多人在同一個分支(如
-
提前備份當前分支
萬一操作出錯,可恢復現場:git branch backup/dev
本次實操目標:
基于如下提交歷史:
我們希望:
- 保留其它三個提交
- 移除
feat(parseScanCodeQuery): 添加二維碼解析函數并更新版本號
操作步驟詳解
1. 打開交互式 Rebase 界面
因為要操作最近 4 條提交,所以執行:
git rebase -i HEAD~4
執行后 Git 會打開編輯器,顯示類似下面的內容:
2. 修改提交列表:drop
需要移除的提交
按i
進入插入模式,找到需要刪除的那一行(二維碼解析函數那一行),把 pick
改成 drop
,像這樣:
然后按 Esc
,輸入 :wq
保存并推出,回車。
3. 處理沖突(如果有)
通常刪除提交不會有沖突,但如果 Git 報錯了,比如有沖突,需要這么處理:
# 先解決沖突
git add .# 然后繼續 rebase
git rebase --continue
如果提示 “no changes”,可以直接繼續。
4. 強制推送到遠程倉庫
因為我們改動了歷史記錄,所以要強制推送:
git push origin dev --force
這樣遠程分支 dev
上的提交記錄也會更新成干凈的狀態!
總結版命令一覽
整體流程就是:
git rebase -i HEAD~4
# 把不想要的 commit 改成 drop
# 按 `Esc`,輸入 `:wq`保存并退出
# (如有沖突,解決后 git add . && git rebase --continue)
git push origin dev --force
小知識補充
pick
:保留這個提交drop
:移除這個提交reword
:修改提交信息edit
:修改提交內容squash
:把多個提交壓成一個fixup
:和 squash 類似但丟棄 commit message
交互式 rebase不僅能刪除,還能整理提交、修改歷史,是 Git 的一項非常重要的技能!
結語
通過這次實操,我們完成了:
- 使用
git rebase -i
打開提交編輯器 - 用
drop
指令刪除不需要的提交 - 強制推送更新遠程倉庫
掌握這套流程后,再也不用擔心歷史提交雜亂了!🚀
希望這篇博客對你有幫助,歡迎點贊、收藏或分享給有需要的朋友!