gpt4 book ai didi

git - 将文件从阶段复制到git中的工作目录

转载 作者:行者123 更新时间:2023-12-05 06:59:37 26 4
gpt4 key购买 nike

在 git 中通常有不止一种方法来做一件事。广义上,git 具有三个相关区域:工作目录、阶段(索引)和本地存储库。 git 中的每个命令通常将文件从这些区域之一移动/复制到其他区域。虽然将文件从工作目录移动到阶段和存储库很常见,但我想知道如何将文件从阶段复制/移动到工作目录。我知道的一个命令是 git checkout -- filename。这将放弃对该文件在工作目录中所做的更改,并将其替换为该文件的最后一个暂存版本。我想知道是否还有不同的命令可以执行相同的操作?

最佳答案

In git there is generally more than one way to do a thing.

没错:Git 有大量的工具,它们之间有重叠。

Broadly git has three concerned areas: The working directory, the stage(index) and the local repository.

这也是事实。

Every command in git generally moves/copies files from one of these areas to other.

我认为这有点夸大其词,因为许多 Git 工具都没有:例如,git branch 只是操作分支名称,git tag 只是操作标签名称, 等等。但是肯定有一些工具可以进行这种复制。

... I was wondering about copying/moving files from Stage to Working Directory

在 Git 2.23 之前,这方面的工具有些分散和笨拙。

在 Git 2.23 中,git checkout 命令被拆分为两个独立的、设计更好的工具:git switchgit restoregit restore 命令具有复制到索引/暂存区和工作树的工具。这些可以单独使用一起使用。

git checkout 命令只有一种形式用于从索引/暂存区复制到工作树,也就是你提到的那个:

One command I know for this is the git checkout -- filename

git reset 命令就像旧的(并且仍然存在)git checkout 一样,因为它做了太多的工作并且没有很好地打包,但它也 可以从索引复制到工作树。这里的问题是,要这样做,它必须首先从提交复制到索引。 (同样值得注意的是:它只通过 git reset --hard 执行此操作,并且当您使用该模式时,您正在调整整个工作树,而不仅仅是一个文件。因此,该模式只有非常具体的用例,尽管它们有些常见。)

git checkout-index 命令可以从索引复制到工作树。它不常使用:它是所谓的管道命令,用于编写新的面向用户的工具。

git showgit cat-file 命令可以提取任何内部对象,包括索引中的对象。您可以对它们使用命令行重定向,例如 git show :0:README.md > index-copy-of-README.mdgit cat-file -p :Makefile | wc -l,让您的任何常规工具都能处理数据。

关于git - 将文件从阶段复制到git中的工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64358193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com