Предыдущий ролик Следующий ролик  

Видео урок: Сохранение изменений в копилку

Git: обучение основам

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

Но у них нет SHA, связанных с ними. Давайте сделаем изменение и отправим его в копилку. Делаем чекаут одного из других наших бранчей. Пусть это будет бранч shorten_title, итак, git checkout shorten_title. В бранче shorten_title нет изменений, которые мы внесли в бранч text_edits. Итак, git branch --merged, что он включает в себя все изменения, которые есть в seo_title, но не изменения, которые существуют в основном бранче или в бранче text_edits.

Если вы помните, раньше мы внесли изменения в файл mission. Давайте снова откроем этот файл и отредактируем его немного. Я пишу Explore California: Our Mission, меняю название. Сохраняю это, закрываю, git status, мы видим изменение. Пока у нас есть это изменение, давайте попробуем переключиться на основной бранч, checkout master, Git говорит, что он не может этого сделать, потому что иначе изменение, которое вы только что внесли, будет переписано, поскольку в основном бранче есть другие изменения для mission.html.

Он говорит, что нужно закоммитить изменение или отправить его в копилку, прежде чем переключить бранч. Это классический случай, когда используется копилка. Это не единственный случай, когда используется копилка, вы можете использовать ее в любой момент, когда хотите что-то спрятать до будущих времен. Но наиболее часто вы будете ее использовать, когда вам будет нужно переключиться между бранчами, и у вас есть изменения, которые вы пока что не хотите превращать в коммиты, вместо этого вы хотите отправить их в копилку. А делаем мы это с помощью команды git stash save, то есть мы говорим Git сохранить эти изменения в копилке, а затем мы пишем сообщение.

В этот раз здесь нет опции -m, мы просто пишем сообщение в кавычках. Я называю это изменение "changed mission page title." Оно может быть каким угодно, как пожелаете. Это не коммит, который может видеть каждый, так что это сообщение вы можете составить не столько тщательно. Это не сообщение для коммита, но оно все же должно быть описательным, чтобы когда вы потом вернетесь к нему, вы поняли, о чем речь, чтобы вы поняли, что именно вы отправили в копилку. Итак, мы нажимаем Return, сохраняем рабочую директорию и буфер для shorten_title, HEAD сейчас находится на этом коммите - "swap out - for : in index.html title".

Это коммит, в котором я сейчас нахожусь, git status, и вы видите, что все чисто, git log --oneline, вы видите, что это тот коммит, где сейчас мы находимся. Итак, Git прячет изменение и говорит, что мы вернулись обратно к этому коммиту. На самом деле, после того как я вставил изменения в копилку, Git запустил git reset hard HEAD, помните, когда мы говорили про git reset hard, мы узнали, что Git берет все, что находится в репозитории и вставляет это в буфер и рабочую директорию, так что у них теперь последним является тот же коммит, что и коммит, на который указывает HEAD.

Если у вас есть неотслеживаемые файлы, вы также можете их включить, вы используете опцию include untracked. Если хотите узнать об этом побольше, посмотрите страницу Помощь. Но обычно в таком случае будут включаться вещи, которые находятся в рабочей директории, то есть отслеживаемые файлы, потому что это вещи, которые могут вызвать конфликт, и Git не даст нам возможность переключиться. Вот и все. Вот как можно вставлять изменения в копилку. Теперь мы изучим то, как можно просмотреть информацию из копилки, и сделаем мы это в следующем ролике.