如何在不影响未暂存更改的情况下在git中丢弃已暂存的更改?

5
为了在我的提交中包含一些未跟踪的文件,我按照这篇文章的方法操作,不小心添加了很多不需要的东西。现在我的仓库里面出现了这种情况。
2016-02-02 16:51 Unknown            o Staged changes <--- untracked files
2016-02-02 16:51 Unknown            o Unstaged changes <-- want to preserve
2016-01-04 17:01 XXXXX YYYYY        I [wool_task_conversion] [master] [origin/HEAD] [origin/master] First commit

我现在希望将未跟踪的文件恢复到原始位置,即未暂存区域,同时保留已跟踪文件未暂存区域中的更改。


如果您的文件是“未被跟踪的(untracked)”,那么它们的原始位置将会是什么? - njzk2
2个回答

3
如果你查看git status的输出,它实际上回答了这个问题:
Davids-Mac-Pro:DAD dhoelzer$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   t

因此,只需执行git reset HEAD <file>即可完成您所要求的操作。

如果您想删除所有已暂存的更改,同时保留更改,则应正确执行以下操作:

 git reset HEAD -- .

这应该从你的项目根目录中运行。


我有1000个文件需要重置。我是一个一个地做还是怎么样? - Black_Zero
已更新以回答您的评论。 - David Hoelzer
非常好。感谢您的快速回复。 - Black_Zero

0

使用:

git resetgit reset --mixed

--mixed

重置索引但不重置工作树(即保留更改的文件但不标记为提交),并报告未更新的内容。这是默认操作

然后,您可以相应地暂存所需的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接