【问题标题】:Revert version of file in git staging area恢复 git 暂存区中的文件版本
【发布时间】:2023-03-14 08:15:02
【问题描述】:

这里是新手。 这与操作git的暂存区有关。

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

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

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

【问题讨论】:

标签: git git-reset git-add


【解决方案1】:

将其从索引中删除并仅添加 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 status 所说的那样。

--混合

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

--硬

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-14
      • 2021-03-26
      • 2011-04-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      相关资源
      最近更新 更多