Припрятывание и очистка

Часто пока вы работаете над одной частью вашего проекта и все находится в беспорядке, у вас возникает желание сменить ветку и поработать над чем-то еще. Чтобы переключить ветку ваш рабочий каталог не должен содержать незафиксированные изменения. Сложность заключается в том, что вы не хотите фиксировать наполовину сделанную работу только для того, чтобы иметь возможность вернуться к ней позже. Справиться с этой проблемой помогает операция припрятывания изменений (stash).

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

Припрятывание ваших наработок

Например, вы перешли в свой проект, начали работать над задачей и, возможно, добавили в индекс какие-то изменения. Если вы откроете панель Индексирование Git, то увидите ваше измененное состояние:

Теперь вы хотите сменить ветку, чтобы исправить небольшую ошибку, но пока не хотите фиксировать ваши текущие наработки. Поэтому вы припрячете эти изменения.

Для того, чтобы припрятать изменение в выделенное для этого специальное хранилище, в панели Навигатор нажмите Групповая разработка > Спрятанные изменения > Спрятать изменения... в контекстном меню проекта.

Припрятанных изменений может быть несколько. Чтобы у вас была возможность отличить одни свои изменения от других, задайте понятное вам название для этих изменений. Установите флажок Включить неотслеживаемые файлы и нажмите Спрятать.

Панель Индексирование Git очистится, а у вашего проекта в панели Навигатор исчезнет значок модифицированности.

Теперь вы можете спокойно создать ветку для исправления ошибки или, если ошибка небольшая, переключиться на master и исправить прямо в нем. После фиксации изменений вы можете переключиться обратно на ветку feature/issue-31 и вернуться к прерванной работе над проектом issue-31.

Чтобы посмотреть список припрятанных изменений в панели Навигатор нажмите Групповая разработка > Спрятанные изменения.

Вы увидите строку 0 Отчет «Доходы» — это ваши изменения. Если бы припрятанных изменений было много, то были бы и другие строки: 1 ..., 2 ... и т.д. Нажмите 0 Отчет «Доходы».

1C:EDT откроет редактор коммита, в котором будут показаны сообщение, неиндексированные и индексированные изменения. Так происходит потому, что вы можете припрятать изменения, находясь в одной ветке, а затем переключиться на другую и попробовать восстановить эти изменения.

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

В результате того, что вы применили обратно припрятанные изменения, сами они не исчезли из хранилища незавершенных изменений. Вы можете убедиться в этом, нажав еще раз Групповая разработка > Спрятанные изменения. Чтобы удалить их, нажмите 0 Отчет «Доходы» еще раз, а в редакторе коммита нажмите (Удалить накопленные изменения).

Очистка рабочего каталога

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

Если есть вероятность, что изменения, которые вы хотите удалить, могут вам понадобиться, лучше их припрятать на какое-то время. Когда вы точно убедитесь, что они вам не нужны, вы сможете удалить их.

Если же вы точно уверены, что измененные файлы из рабочего каталога и из индекса вам не нужны, выполните в панели Индексирование Git следующие действия для очистки рабочего каталога.

Сначала избавьтесь от индексированных изменений в поле Индексированные изменения:

  1. Нажмите Ctrl+A, чтобы выделить все индексированные файлы;
  2. Нажмите Заменить на HEAD-ревизию в контекстном меню.

Затем избавьтесь от отслеживаемых файлов в поле Неиндексированные изменения:

  1. Нажмите (Hide Untracked Files), чтобы скрыть новые, неотслеживаемые файлы;
  2. Нажмите Ctrl+A, чтобы выделить все индексированные файлы;
  3. Нажмите Заменить на HEAD-ревизию в контекстном меню.

И, наконец, удалите неотслеживаемые файлы в поле Неиндексированные изменения:

  1. Отожмите (Hide Untracked Files), чтобы увидеть неотслеживаемые файлы;
  2. Нажмите Ctrl+A, чтобы выделить их все;
  3. Нажмите Удалить в контекстном меню.

По материалам книги Pro Git (авторы Scott Chacon и Ben Straub, издательство Apress). Книга распространяется по лицензии Creative Commons Attribution Non Commercial Share Alike 3.0 license.