HOWTO · Git
在 Git 中撤消對單個檔案的本地更改
在 Git 中重置單個檔案的不同方法。
在本文中,我們將討論如何使用 git checkout 和 git reset 等命令將檔案回滾到我們喜歡的版本。儘管 Git 使重置檔案和倉庫變得容易,但在 Git 中撤消更改的概念比你想象的要複雜一些。
撤消 repo 中的更改與撤消對你在本地處理的一組檔案的更改是不同的。
git checkout、git reset 和 git restore 命令在將檔案回滾到以前的版本時會派上用場。但在深入研究這些命令之前,我們必須問自己;重置檔案是什麼意思?
值得注意的是,在不同的情況下,重置檔案可能會有所不同。你可能會發現 git checkout 命令與你的期望不符。
對於想要回滾已經提交的更改和想要撤消更改以使檔案與 repo 同步的人來說,這是不同的。
以下是你應該注意的一些術語,以瞭解這些差異。
- 工作樹
- 暫存區
- 倉庫
在 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 命令撤消對單個檔案的更改。
以下是我們可以使用該命令的一些方法。
-
撤消對 repo 的更改
$ git restore --source [commit id] path/to/file -
取消暫存檔案
$ git restore --staged path/to/file -
撤消對工作副本的更改
$ git restore path/to/file
我們經常發現自己回滾提交而不是重置單個檔案。但是,當你需要時,它相當簡單。