從 Git 中的分支中刪除提交

Abdul Jabbar 2023年1月30日 2021年12月25日
  1. 如果未推送到 Git 中的倉庫,則刪除更改
  2. 如果推送到 Git 中的倉庫,則刪除更改
  3. 刪除已刪除的提交
從 Git 中的分支中刪除提交

當我們開始處理一個大型專案時,我們經常會遇到必須在分支中更新、刪除或新增部件的情況。如果開發時間跨度較長且有嚴格的截止日期,則提交訊息的維護可能會成為團隊的障礙。

因此,為了更簡單地維護簡潔的提交歷史,我們將在本文中學習一些在使用 Git 時可能會遇到的常見條件的用法。

Git 為我們提供了一些命令來從分支中刪除我們之前的提交。本文下面將討論可用的策略和命令。

在 Git 中有幾種方法可以從分支中刪除或移除提交。第一步是找出最適合我們場景的技巧,這取決於我們是否已將提交推送到倉庫中。

在嘗試之前,我們應該注意執行這些命令將刪除我們的工作目錄更改。另外,請注意,為了將來我們希望在倉庫中單獨儲存更改,git reset 是一個將我們的工作目錄重置為指定提交的命令。

如果未推送到 Git 中的倉庫,則刪除更改

在我們尚未將更改推送到倉庫的場景中,將使用以下命令。

git reset --hard HEAD~1

這將擺脫所有工作目錄更改並將 HEAD 移動到 HEAD 之前的提交。

假設我們必須向上刪除提交,直到特定提交。在這種情況下,我們將在命令列中執行 git log 命令以查詢特定的提交 ID,然後將執行以下命令:

git reset --hard <sha1-commit-id>

這將忽略所有工作目錄更改並將 HEAD 移動到所選的提交。

如果推送到 Git 中的倉庫,則刪除更改

在另一種情況下,當我們已經推送了我們的更改時,我們需要執行以下命令。

git push origin HEAD --force 

請注意,如果其他人已經拉取了相應的分支,則從最新的分支開始會更好。如果我們在其他人拉動時不執行此操作,它會將其合併到他們的工作中,我們將再次將其推回。

如果遇到需要查詢已刪除提交的情況,除非我們在倉庫中收集了垃圾,否則它會出現在 git reflog 中。

刪除已刪除的提交

要從分支中刪除已刪除的提交,我們可以使用以下命令:

git reset --soft HEAD^

此命令將恢復或重置先前提交的所有更改,並將其帶回倉庫中的新提交。

Author: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn