2

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

4

1 回答 1

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 中的版本替换索引中的文件(有效地从索引中删除文件),然后用索引中的版本替换工作树中的文件,消除更改。

于 2013-07-26T21:44:04.353 回答