恢复git临时区域中的文件版本

时间:2016-01-29 14:38:45

标签: git git-reset git-add

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

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

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

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

2 个答案:

答案 0 :(得分:0)

从索引中删除它并仅添加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 reset

  

git reset

     

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

     

- 软

     

根本不触摸索引文件或工作树(但重置    头部到<commit>,就像所有模式一样。)    这留下了你所有的    已更改的文件&#34;要提交的更改&#34;,因为git status会将其提交。

     

- 混合

     

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

     

- 硬

     

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

答案 1 :(得分:0)

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

但是,我怀疑这个例子就是这样的:只是一个例子,你当前的情况涉及更多的变化,而你正在寻找更通用的&#34; git方式&#34;将索引恢复到以前的状态。不幸的是,这是不可能的:索引只是代码快照的保留区域,它本身没有版本化。

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