在 Git 中撤消對單個檔案的本地更改

John Wachira 2023年1月30日
  1. 在 Git 中回滾之前提交的檔案
  2. 在 Git 中撤消對暫存和未暫存檔案的更改
  3. git restore 命令
在 Git 中撤消對單個檔案的本地更改

在本文中,我們將討論如何使用 git checkoutgit reset 等命令將檔案回滾到我們喜歡的版本。儘管 Git 使重置檔案和倉庫變得容易,但在 Git 中撤消更改的概念比你想象的要複雜一些。

撤消 repo 中的更改與撤消對你在本地處理的一組檔案的更改是不同的。

git checkoutgit resetgit restore 命令在將檔案回滾到以前的版本時會派上用場。但在深入研究這些命令之前,我們必須問自己;重置檔案是什麼意思?

值得注意的是,在不同的情況下,重置檔案可能會有所不同。你可能會發現 git checkout 命令與你的期望不符。

對於想要回滾已經提交的更改和想要撤消更改以使檔案與 repo 同步的人來說,這是不同的。

以下是你應該注意的一些術語,以瞭解這些差異。

  1. 工作樹
  2. 暫存區
  3. 倉庫

在 Git 中回滾之前提交的檔案

一個常見的情況是我們已經提交了一個檔案並想要撤消更改。在這種情況下,我們將使用 git checkout 命令。

我們之前使用該命令來切換分支,但這只是它可以做的一部分。

我們可以使用該命令撤消對已提交檔案的更改。它會將我們工作樹中的檔案與我們 repo 歷史中任何時候的檔案進行匹配。

我們可以指定分支、標籤和提交。

以下是執行該命令的最佳方式。

$ git checkout [commit ID] -- path/to/file

執行上面的命令時,我們將 Git 指向我們倉庫中的特定提交 ID。此外,我們還新增了單個檔案的路徑。

執行上面的命令只會更新我們工作樹中的檔案。我們將不得不暫存檔案並進行新的提交。

在 Git 中撤消對暫存和未暫存檔案的更改

我們的暫存區包含我們要提交的檔案。要撤消暫存檔案中的更改,請執行 git reset 命令取消暫存檔案。

$ git reset HEAD path/to/file

我們在暫存檔案之前執行以下命令來撤消本地更改。

$ git checkout -- path/to/file

該命令類似於我們的第一個命令,只是它省略了我們的提交 ID。

git restore 命令

較新版本的 Git 允許我們使用 git restore 命令撤消對單個檔案的更改。

以下是我們可以使用該命令的一些方法。

  1. 撤消對 repo 的更改

    $ git restore --source [commit id] path/to/file
    
  2. 取消暫存檔案

    $ git restore --staged path/to/file
    
  3. 撤消對工作副本的更改

    $ git restore path/to/file
    

我們經常發現自己回滾提交而不是重置單個檔案。但是,當你需要時,它相當簡單。

作者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

相關文章 - Git Checkout