git - 如何从 git 索引中删除已修改的文件并一步放弃修改?

标签 git git-index

我最近对错误的分支进行了一次草率的大提交。我决定希望将更改提交到不同的分支上,并可能将大提交拆分为几个较小的提交。我执行了git cherry-pick -nthis 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/

相关文章:

git - 为什么不能部分克隆 git 存储库?

git - git索引中的 "stat information"是什么?

git - 为什么 git 在 'git add' 命令之间生成新的 blob?

git - stash 文件在 `git status` (git v.2.16.0) 中显示为未更改

git - 我可以运行位于 Azure 数据工厂上的 git 存储库中的 SQL 脚本文件吗?

git - 在 GitHub 上推送到远程指向一个新的服务器 IP

git - git索引的内容在 merge 期间如何演变( merge 失败后索引中的内容)?

git - 是否可以从存储中应用单行?

git - 如何重新开始跟踪从 git 索引中删除的目录/文件?

git - 对 git rebase 感到困惑