2013-06-17 4 views
2

В моей промежуточной области я добавил кучу файлов. Теперь я понимаю, что хочу зафиксировать из этих файлов, но не другие (я хочу, чтобы на самом деле оставил остальное). Как я могу отключить некоторые файлы, но оставить их в рабочем директории, чтобы я мог делать с ними что-то другое (например, скрепление)? Ради обсуждения, скажем, у меня есть этот 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 себя, но не имеет никакого эффекта: файл остается в промежуточной области (ошибка?).

Чтобы быть ясным, я не хочу потерять изменения, внесенные мной в package.json: Я просто не хочу их фиксировать.

EDIT

Это был ошибкой с моей стороны: мой статус мерзавца был настолько велик, что я не мог видеть изменений не постановочных для фиксации заголовка. Именно туда были перемещены неустановленные файлы, и именно этого я и хотел.

+0

Файл после сброса переходит в состояние отсутствия следа, он не войдет в вашу фиксацию. – amitchhajer

+3

'git reset HEAD' - правильный подход. [Чрезвычайные претензии требуют экстраординарных доказательств] (http://www.catb.org/~esr/faqs/smart-questions.html#idp5249360) - это не очень вероятно, что это действительно ошибка в 'git'. Предоставьте дополнительную информацию, например. вывод 'git status' после запуска' git reset HEAD', значения параметра 'core.autocrlf' и всего остального, о чем вы можете думать. – DCoder

+1

Можете ли вы воспроизвести это? 'коснуться чего-нибудь && git добавить что-то && git сбросить HEAD что-то'? – 1615903

ответ

4

Я всегда предпочитаю синтаксис:

git reset HEAD -- a/file 

(см this answer на '--' использование двойной дефис)

Если git status вас смущает, вы можете сделать:

git diff --cached -- a/file 

Если выход пуст, то этот файл не выполняется.

0

Этап - это только то, что ваши изменения отслеживаются.

Если и хочет вернуться после того, как с помощью «мерзавца совершить»

Используй это: git reset --soft "HEAD^" После использования этой команды, если внести некоторые изменения в файл, команда git status покажет, что файл находится в (отслеживается), а часть вашего контента должна быть добавлена ​​в промежуточную область. Вам нужно снова использовать команду git add <filename>, чтобы добавить изменения в промежуточную область.

Теперь, если вы не хотите здесь вносить изменения и хотите еще один шаг назад, например. изменением направления «мерзавец добавить»

Используйте это: git rm --cached <filename> После этого, когда вы будете использовать git status файл отображается как не отслеживается.

Смежные вопросы