2013-09-11 6 views
5

Я сделал несколько изменений в локальной ветви мастера. Местные изменения не были поставлены (добавлены). Чтобы обновить главную ветку, я сделал следующее:Использует ли «git stash apply» или «git stash pop» также добавляет измененные файлы для фиксации?

  1. statshed мои местные изменения.
  2. мерзавец тянуть
  3. мерзавца копить применять

Я вижу, что после этого локальных изменений получают в постановке (добавлено)? Разве они не должны оставаться неустановленными, как прежде.

+0

Я думаю, что вы просите же, как этот вопрос: https://stackoverflow.com/questions/1237021/why-does-git-stash-apply-stage-my-changes –

ответ

3

git stash по существу то же самое, что и git commit. Он создает полноценную фиксацию, но не добавляет ее в историю. Вместо этого он добавляет фиксацию к кошельку.

Поэтому git stash должен сделать выбор: либо совершить (копить) все в неподтвержденных изменения или только совершить (копить) те, которые добавляются в индекс. Он не может сделать то и другое. Это займет две коммиты вместо одной.

AFAIK, git stash принимает все неотложные изменения.

+0

В этом случае, могу ли я отключить изменения, поставленные с помощью «git stash apply»? – Karun

+0

Да, конечно. 'git stash apply' просто выполняет изменения, которые помогут вам. Если вы не хотите, чтобы они были поставлены, отключите их. – Oznerol256

+1

Не противоречите ли вы документации? Запись для 'git stash pop' упоминает опцию' --index' и сообщает об этом: 'Если используется опция -index, она пытается восстановить не только изменения рабочего дерева, но также и индексы. Однако это может завершиться неудачно, если у вас есть конфликты (которые хранятся в индексе, где вы, следовательно, больше не можете применять изменения, поскольку они были изначально). «В моих глазах это означает, что если не указано« -index », спрятанные изменения применяются только к дереву работы, не касаясь индекса. – kostix

2

git stash также добавляет изменения в локальную систему, но не добавляет их в дерево. Вы всегда можете увидеть все спрятанные вещи командой git stash list. Вы также можете добавить свой контент для stash позже после изменений основного содержимого, например, после нажатия cammand и т. Д. Я бы предложил вам следовать оригинальным документам git, чтобы они поняли. Вот http://git-scm.com/book/en/Git-Tools-Stashing

+0

Спасибо за ссылку, это помогает. – Karun

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