Git 提交后如何取消添加文件?

Git 提交后如何取消添加文件?,git,Git,我不小心给提交添加了一些更改。我想从提交中删除这些更改,但将它们保留在我的工作树中。为了清楚起见,我做了这样的事情: git add xyz git add unwanted # please make it as if I never typed this line git commit -m 'nice xyz changes' 是否有一种简单的方法来修改此提交,使不需要的git add在提交之前从未发生过 我想我可以使用差异,将文件重置为上次提交时的状态,修改错误的提交并应用差异。有更简

我不小心给提交添加了一些更改。我想从提交中删除这些更改,但将它们保留在我的工作树中。为了清楚起见,我做了这样的事情:

git add xyz
git add unwanted # please make it as if I never typed this line
git commit -m 'nice xyz changes'
是否有一种简单的方法来修改此提交,使不需要的
git add
在提交之前从未发生过

我想我可以使用差异,将文件重置为上次提交时的状态,修改错误的提交并应用差异。有更简单的方法吗?

您只需:

git checkout HEAD^ -- unwanted
git commit --amend

我刚刚注意到,
git reset
完全是为我的需要而设计的。它只涉及索引,并将其重置为特定的提交(或者更一般地说,重置为某种“树型”)。这棵正在工作的树完好无损。这就解决了我的问题:

git reset HEAD^ -- unwanted
git commit --amend

值得注意的是:文件
不需要的
位于较旧的提交中,您在工作树中对其进行了修改,但希望较新的提交使用较旧版本的文件,而不是新的更新版本。(否则,在我写这篇评论时,下面提供的一个答案就不太管用了!)@torek是的,没错。我不善于解释事情。但是,下面提到的签出并不能完全满足我的需要,因为它还覆盖了我的工作树,而不仅仅是旧版本的索引。