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



这里的新手。这与操纵 git 的暂存区域有关。

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

它的 git 提交版本中有一行。然后我编辑了猫.txt添加了第二行并上演了它。然后再次剪辑,添加第三行并上演。我的工作副本和暂存区域引用包含三行。

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

将其

从索引中删除并仅添加 2 行:

# 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 reset

git 重置

此窗体将当前分支头重置为 <commit> 并且可能 更新索引(将其重置为 <commit> 树)和 工作树取决于<mode>,它必须是 以后:

--软

根本不接触索引文件或工作树(但重置 头到<commit>,就像所有模式一样)。
这留下了你所有的 更改的文件"要提交的更改",正如 git 状态所说的那样。

--混合

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

--硬

重置索引和工作树。对跟踪文件的任何更改 自<commit>以来的工作树被丢弃。

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

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

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

最新更新