我最近对错误的分支进行了一次草率的大提交。我决定希望将更改提交到不同的分支上,并可能将大提交拆分为几个较小的提交。我执行了git cherry-pick -n
如 this answer 所示。这导致我当前的分支发生了一系列分阶段的变化。我知道我不需要这些改变之一。所以我想知道:有什么方法可以从索引中删除修改的文件并一步丢失更改?我见过的大多数解决方案都需要 git reset
随后是 git checkout -- path/to/file
.
最佳答案
我最终做的是一个git checkout HEAD -- path/to/file
,据我所知,它用 HEAD 提交树中的文件替换了文件,而不是 checkin 首先是索引。
我在没有查阅 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中的版本替换了索引中的文件(有效地从索引中删除了文件),然后用索引中的版本替换了工作树中的文件,消除了更改.
关于git - 如何从 git 索引中删除已修改的文件并一步放弃修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891521/