从暂存区域中删除文件

时间:2013-06-17 05:44:33

标签: git

我在临时区域添加了一堆文件。现在我意识到我想提交那些的那些文件,而不是其他文件(我想隐藏其余文件)。我如何取消暂存某些文件,但将它们保留在工作目录中以便我可以用它们做其他事情(比如存储)?为了便于讨论,我们假设我有git status

# On branch develop
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   app/scripts/vendor/ember-1.0.0-rc.5.js
#   deleted:    node_modules/grunt-contrib-handlebars/test/expected/partials_use_namespace.js
#   modified:   package.json
#   modified:   ../python_modules/config/settings1.py
#

假设我要取消暂停package.json。我怎样才能做到这一点?我尝试过:

git reset HEAD package.json

正如git本身所建议的那样,但没有效果:文件停留在暂存区域(bug?)。

要清楚,我不想放弃对package.json所做的更改:我根本不想提交它们。

修改

这对我来说是一个错误:我的git状态太大了,我看不到更改没有为提交标题上演。这就是未分段文件被移动到的地方,这就是我想要的。

2 个答案:

答案 0 :(得分:4)

我总是喜欢这种语法:

git reset HEAD -- a/file

(请参阅--'双连字符使用时的this answer

如果git status让您感到困惑,您仍然可以执行以下操作:

git diff --cached -- a/file

如果输出为空,则该文件不会暂存。

答案 1 :(得分:0)

暂存只是跟踪您的更改。

如果你想在使用' git commit '

后回来

使用此:git reset --soft "HEAD^" 如果对文件进行了一些更改,则使用此命令后,git status命令将显示您的文件位于暂存区域(已跟踪),并且您的某些内容需要添加到暂存区域。您需要再次使用git add <filename>命令将更改添加到暂存区域。

现在,如果您不想在此处进行更改并希望再退一步,例如颠倒' git add '

使用此:git rm --cached <filename> 在此之后,当您使用git status时,您的文件将显示为未跟踪。