如何从git索引中删除修改后的文件并一步丢弃修改?

时间:2013-07-26 21:44:04

标签: git git-index

我最近对错误的分支执行了一个草率的大提交。我决定我希望将更改提交到不同的分支,并可能将大提交分成几个较小的提交。我按照this answer的指示执行了git cherry-pick -n。这导致我当前分支中的一系列分阶段更改。我知道我不需要其中一个改变。所以我想知道:有没有办法从索引中删除修改后的文件并在一个步骤中丢失更改?我见过的大多数解决方案都需要git reset后跟git checkout -- path/to/file

1 个答案:

答案 0 :(得分:3)

我最终做的是一个git checkout HEAD -- path/to/file,据我所知,它用HEAD提交树中的文件替换了文件,而不是先检查索引。

我在没有咨询git手册页的情况下提出了这个解决方案,但感谢@torek指出了git-checkout(1)手册页。这是我使用的git checkout的第五种形式,看起来像这样:

git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>...

该表格的部分文件说:

The <tree-ish> argument can be used to specify a specific tree-ish (i.e. commit,
tag or tree) to update the index for the given paths before updating the working
tree.

所以实际发生的是:git用HEAD中的版本替换索引中的文件(从索引中有效删除文件),然后使用索引中的版本替换工作树中的文件,从而消除了更改