文章目錄
- Git Restore 命令詳解與實用示例
- 1. 恢復工作區文件到最后一次提交的狀態
- 基本命令
- 示例
- 恢復所有更改
- 2. 恢復某個文件到特定提交的狀態
- 基本命令
- 示例
- 3. 恢復暫存區的文件
- 基本命令
- 示例
- 恢復所有暫存的文件
- `git restore` 的常見選項
- `git restore` 與 `git checkout` 比較
- 總結
Git Restore 命令詳解與實用示例
git restore
是 Git 2.23 版本引入的新命令,旨在替代 git checkout
用于恢復文件和撤銷工作區的更改。它將原本由 git checkout
執行的文件恢復功能進行獨立化,使得 Git 的命令更加清晰和易用。
git restore
主要有兩種用法:
- 恢復工作區文件到上次提交的狀態
- 恢復特定文件到某個提交的狀態
1. 恢復工作區文件到最后一次提交的狀態
當你修改了文件,但決定不保留這些更改時,可以使用 git restore
將文件恢復到最近的提交版本。
基本命令
git restore <文件名>
示例
假設你修改了 main.py
文件,但決定撤銷這些修改,恢復到最后一次提交的狀態:
git restore main.py
這會把 main.py
恢復到當前分支上最新的提交版本。
恢復所有更改
如果想恢復當前工作目錄下所有文件的更改,可以使用 .
作為通配符:
git restore .
2. 恢復某個文件到特定提交的狀態
你可以選擇恢復某個文件到某個特定的提交版本,而不是當前分支的最新提交。
基本命令
git restore --source=<commit_id> <文件名>
示例
假設你想將 index.html
恢復到 abc1234
這個提交時的版本:
git restore --source=abc1234 index.html
這會將 index.html
恢復到提交 abc1234
的狀態。
注意:
git restore --source
中指定的<commit_id>
也可以是分支名或者標簽名。
3. 恢復暫存區的文件
git restore
還可以用來撤銷文件的暫存操作,即把文件從暫存區(staging area)移回工作區。
基本命令
git restore --staged <文件名>
示例
如果你已將 main.py
文件添加到暫存區,但決定不提交它,可以使用 git restore --staged
命令將其從暫存區移除,保留在工作區:
git restore --staged main.py
這會將 main.py
從暫存區移除,保留文件的修改,但不會影響工作區的內容。
恢復所有暫存的文件
如果你想將所有已暫存的文件恢復到工作區,可以使用:
git restore --staged .
git restore
的常見選項
選項 | 說明 |
---|---|
--source=<commit_id> | 指定要恢復的提交,默認為當前分支的最新提交 |
--staged | 只恢復暫存區的文件,撤銷暫存操作 |
--worktree | 恢復工作區的文件到指定提交的狀態 |
. | 恢復當前目錄下所有文件 |
git restore
與 git checkout
比較
操作 | git checkout | git restore |
---|---|---|
恢復工作區文件 | git checkout -- 文件名 | git restore 文件名 |
恢復暫存區文件 | git reset 文件名 | git restore --staged 文件名 |
切換分支 | git checkout 分支名 | 使用 git switch |
總結
git restore
是一個更專注于恢復文件和撤銷更改的命令。- 用
git restore
恢復文件或撤銷暫存比git checkout
更簡潔。 - 推薦使用
git restore
來恢復文件的狀態,并將文件從暫存區移回工作區。