【发布时间】:2023-03-14 08:15:02
【问题描述】:
这里是新手。 这与操作git的暂存区有关。
假设我有一个名为 cat.txt 的文件。
它的 git 提交版本中只有一行。 然后我编辑 cat.txt 添加了第二行并上演了它。 然后再次编辑,添加第三行并上演。 我的工作副本和暂存区对它的引用包含三行。
现在我决定提交只有两行的版本。 如何将暂存区域中的 cat.txt 恢复为其两行版本? 谢谢
【问题讨论】:
这里是新手。 这与操作git的暂存区有关。
假设我有一个名为 cat.txt 的文件。
它的 git 提交版本中只有一行。 然后我编辑 cat.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 reset
git 重置
此表单将当前分支头重置为
<commit>并且可能 更新索引(将其重置为<commit>的树)和 工作树取决于<mode>,它必须是 以下:--软
根本不接触索引文件或工作树(但会重置 前往
<commit>,就像所有模式一样)。
这让你所有的 更改的文件“要提交的更改”,正如 git status 所说的那样。--混合
重置索引但不重置工作树(即更改的文件 被保留但未标记为提交)并报告尚未提交的内容 更新。这是默认操作。
--硬
重置索引和工作树。对跟踪文件的任何更改 自
<commit>以来的工作树被丢弃。
【讨论】:
如果您的案例确实像您提供的示例一样简单,并且您想继续使用 3 行版本,那么只需备份 cat.txt,将其编辑为仅包含两行,将其添加到索引,然后将工作目录中的 cat.txt 恢复为 3 行版本。
但是,我怀疑该示例正是这样:只是一个示例,您当前的情况涉及更多更改,并且您正在寻找一种更通用的“git方式”将索引恢复到以前的状态。不幸的是,这是不可能的:索引只是代码快照的保存区域,它本身没有版本控制。
接下来,我建议您提交增量更改,而不仅仅是将它们添加到索引中。这将为您提供所需的版本控制,并且您始终可以在推送到存储库之前将这些提交展平。
【讨论】: