还原git暂存区域中文件的版本

还原git暂存区域中文件的版本,git,git-reset,git-add,Git,Git Reset,Git Add,新来的新手。 这与操作git的暂存区域有关 假设我有一个名为cat.txt的文件 它的git提交版本中只有一行。 然后我编辑了cat.txt,添加了第二行,并将其分阶段进行。 然后再次编辑,添加第三行,并将其分阶段播放。 我的工作副本和对它的暂存区引用包含三行 现在我决定提交只有两行的版本。 如何将暂存区中的cat.txt恢复为其两行版本? 谢谢将其从索引中删除,只添加两行: # remove form index git rm --cached cat.txt # add only the

新来的新手。 这与操作git的暂存区域有关

假设我有一个名为cat.txt的文件

它的git提交版本中只有一行。 然后我编辑了cat.txt,添加了第二行,并将其分阶段进行。 然后再次编辑,添加第三行,并将其分阶段播放。 我的工作副本和对它的暂存区引用包含三行

现在我决定提交只有两行的版本。 如何将暂存区中的cat.txt恢复为其两行版本?
谢谢

将其从索引中删除,只添加两行:

# remove form index 
git rm --cached cat.txt

# add only the 2 desired lines
git add -p 

# choose the split method and select the content to add

“git重置” 另一个选项是使用
git重置

git重置

此表单将当前分支头重置为
,并且可能 更新索引(将其重置为
树)和 工作树取决于
,它必须是 以下:

——柔软 根本不接触索引文件或工作树(但重置 头指向
,就像所有模式一样)。
这就剩下你所有的时间了 更改文件“要提交的更改”,正如git status所说

--混合的 重置索引,但不重置工作树(即更改的文件 保留但未标记为提交)并报告尚未提交的内容 更新。这是默认操作

--硬的 重置索引和工作树。对中跟踪文件的任何更改 自
以来的工作树将被丢弃


将其从索引中删除并仅添加两行:

# remove form index 
git rm --cached cat.txt

# add only the 2 desired lines
git add -p 

# choose the split method and select the content to add

“git重置” 另一个选项是使用
git重置

git重置

此表单将当前分支头重置为
,并且可能 更新索引(将其重置为
树)和 工作树取决于
,它必须是 以下:

——柔软 根本不接触索引文件或工作树(但重置 头指向
,就像所有模式一样)。
这就剩下你所有的时间了 更改文件“要提交的更改”,正如git status所说

--混合的 重置索引,但不重置工作树(即更改的文件 保留但未标记为提交)并报告尚未提交的内容 更新。这是默认操作

--硬的 重置索引和工作树。对中跟踪文件的任何更改 自
以来的工作树将被丢弃


如果您的案例确实像您给出的示例一样简单,并且您希望继续使用3行版本,那么只需备份cat.txt,将其编辑为仅包含两行,将其添加到索引中,然后将工作目录中的cat.txt恢复为3行版本

然而,我怀疑这个例子确实是这样的:只是一个例子,您当前的情况涉及更多的更改,您正在寻找一种更通用的“git方式”,将索引恢复到以前的状态。不幸的是,这是不可能的:索引只是代码快照的保留区域,它本身没有版本控制


接下来,我建议您提交增量更改,而不仅仅是将它们添加到索引中。这将为您提供所需的版本控制,并且在推送到存储库之前,您始终可以平坦化这些提交

如果您的案例确实像您给出的示例一样简单,并且您希望继续使用3行版本,那么只需备份cat.txt,编辑它以仅包含两行,将其添加到索引中,然后将工作目录中的cat.txt恢复为3行版本

然而,我怀疑这个例子确实是这样的:只是一个例子,您当前的情况涉及更多的更改,您正在寻找一种更通用的“git方式”,将索引恢复到以前的状态。不幸的是,这是不可能的:索引只是代码快照的保留区域,它本身没有版本控制

接下来,我建议您提交增量更改,而不仅仅是将它们添加到索引中。这将为您提供所需的版本控制,并且在推送到存储库之前,您始终可以平坦化这些提交

可能的重复可能的重复