在 Git 中推送遠端倉庫之前撤消提交

Azhar Bashir Khan 2022年4月22日
在 Git 中推送遠端倉庫之前撤消提交

本教程介紹如何在 Git 中重置尚未推送到遠端倉庫的提交,Git 是一個版本控制系統,我們使用它來跟蹤對專案目錄中檔案所做的更改。

在 Git 中,提交用於跟蹤對檔案所做的更改。有時,我們可能會在本地提交檔案的更改,然後可能會覺得這些更改不再相關。

我們現在要重置此提交,而不是將此提交推送到遠端倉庫。我們可以使用 git reset 命令完成重置尚未推送到遠端的提交的任務。

在 Git 中推送到遠端倉庫之前撤消提交

我們在協作開發環境中使用 Git 來跟蹤對檔案所做的更改。Git 使用提交來完成跟蹤檔案更改的任務。

當我們對檔案所做的更改感到滿意時,我們會將更改提交到專案的 Git 倉庫。在基本的 Git 工作流程中,一旦我們測試並完成了更改,我們就會將更改新增到暫存區域。為此,我們使用 git add 命令。

將更改新增到暫存區域後,我們現在繼續將更改提交到我們的 Git 倉庫。我們使用命令 git commit 來提交更改。

每個提交用於記錄倉庫狀態的快照以及名稱、時間戳和訊息。當我們使用 git commit 命令提交更改時,這些更改將提交到本地 Git 倉庫。

此本地倉庫與遠端 Git 倉庫相關聯。然後我們繼續將本地 Git 倉庫的提交推送到遠端倉庫。我們使用 git push 命令來實現這一點。

有時,在將提交推送到遠端倉庫之前,我們可能會覺得本地倉庫中的當前提交不再需要,我們希望將其丟棄。

因此,要丟棄本地倉庫中的提交,我們可以使用 git reset 命令。假設我們的 Git 倉庫中有如下提交歷史記錄。

$ git log --oneline
453dcfc (HEAD -> master) minor change
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...

在提交歷史中,提交 453dcfc 在本地 Git 倉庫中,但尚未在遠端倉庫中。之前的提交也在遠端倉庫中。

因此,要丟棄本地倉庫中存在但尚未推送到遠端倉庫的提交,我們可以執行 git reset 命令,如下所示。

$ git reset --soft HEAD~1

上面的 git reset 命令將當前 HEAD 重置一次。帶有 --soft 選項的 git reset 命令不會觸及暫存區和工作樹。

它將我們所有更改的檔案儲存為要提交的更改,正如 git status 所說的那樣,如下所示。

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
	modified:   README.md

我們現在可以重新檢查提交歷史並觀察提交 453dcfc 不再存在。

$ git log --oneline
bea3aac (origin/master, origin/HEAD) some change
b14f387 Other change
...

我們已經展示瞭如何在 Git 中重置尚未推送到遠端倉庫的提交。

有關更多資訊,請訪問這些連結。

  1. git-reset
  2. Git 重置

相關文章 - Git Reset