文章目录
- 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
来恢复文件的状态,并将文件从暂存区移回工作区。