我在临时区域添加了一堆文件。现在我意识到我想提交那些的那些文件,而不是其他文件(我想隐藏其余文件)。我如何取消暂存某些文件,但将它们保留在工作目录中以便我可以用它们做其他事情(比如存储)?为了便于讨论,我们假设我有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状态太大了,我看不到更改没有为提交标题上演。这就是未分段文件被移动到的地方,这就是我想要的。
答案 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
时,您的文件将显示为未跟踪。