有两个相似得令人困惑的命令,git restore
和git checkout-index
。我看到git restore
将文件签出到工作树中。我还看到git checkout-index
也将文件签出到工作树中。根据这些答案,听起来两个命令的作用是一样的。两者的引入似乎是为了澄清git checkout
的多种不同用法。唯一的区别是纯粹的形式和API的可操作性,即;瓷器;或";管道";这两个命令的性质?
可以说git checkout-index
仍然存在,部分原因是历史原因,但这些命令具有不同的功能。
主要是:
git restore
有一些选项,允许从恢复索引之外的其他(另一个提交或树(,并可以更新索引git checkout-index
将以独占方式将索引中的内容带到磁盘,并且永远不会更改索引
此外,git checkout-index
具有一组选项,这些选项使其成为";获取索引中文件的内容以使其通过linter";(通常在预提交挂钩中(:
- 默认情况下,不会覆盖现有文件(除非在选项中添加
-f
,否则知道不会从磁盘中删除更改( - 它有
--prefix
(例如:--prefix=/tmp/
(或--temp
选项,可以轻松创建某些文件的临时副本
git restore
,另一方面,其编写目的是替换git checkout -- <filenames>
-恢复文件的版本:
当与--worktree
选项(默认情况下处于启用状态(一起使用时,它将覆盖和删除磁盘中的文件
- 有一个选项可以避免";删除文件";部分(
--overlay
——这对您来说是数字清晰度:(( - 目前没有选择避免";覆盖文件";part(如果运行
git restore --worktree
,可能无论如何都要覆盖某些内容…(
(为了完整性:git checkout branch
部分-更改活动分支-由git switch
覆盖(
git restore
命令用于取消暂存更改,或以某种方式将当前分支/源同步到差异分支/源。
git checkout-index
命令将把索引中列出的所有文件复制到工作目录中(不覆盖现有文件(。
主要区别在于,使用restore
命令,可以使用--worktree
标志指定要与当前分支或worktree
同步的内容。或者使用--staged
标志同步暂存的文件
在checkout-index
命令中,所有文件都是从索引中复制的。恢复就像从备份中复制,签出就像从自己的索引中添加文件。
有关更多信息,请查看以下命令的手册页:git restore
:在这里git checkout-index
:此处