Отредактировано 2 Несколько недель назад от ExtremeHow Редакционная команда
GitХранилищеWindowsMacЛинуксКомандная строкаРазработкаКонтроль версийУправление исходным кодомРабочий процессПродуктивность
Перевод обновлен 2 Несколько недель назад
Git — одна из самых широко используемых систем контроля версий в мире разработки программного обеспечения. Он был создан Линусом Торвальдсом в 2005 году для разработки ядра Linux. С тех пор он используется в проектах программного обеспечения любого размера, командами разработчиков... иногда даже разработчиками, работающими в одиночку. Git помогает отслеживать версии кода, сотрудничать с несколькими разработчиками и гарантировать, что всегда сможешь вернуться к предыдущим версиям своего программного обеспечения, когда это необходимо.
При работе над проектом, управляемым Git, могут быть ситуации, когда необходимо переключиться на другие ветки. Например, вы можете работать над новой функцией и вдруг появится сообщение о критической ошибке, которую нужно срочно исправить. В таких случаях вы захотите переключиться на исправление ошибки, не потеряв прогресс над функцией, над которой вы работали. Вот тут-то и приходит на помощь Git Stash.
Git stash — это мощная функция, которая позволяет разработчикам временно сохранять свои изменения без их коммита в репозиторий. Она эффективно "откладывает" сделанные вами изменения, позволяя вам переключиться на новую ветку без коммита новой функции, которая, возможно, еще не готова для общего просмотра. Когда вы будете готовы, вы можете применить эти изменения обратно к своей рабочей копии или к другой ветке.
Когда вы выполняете команду git stash
, ваши изменения сохраняются в стек. Этот стек может содержать несколько сохранений, и вы можете применить любое из сохраненных позже. Одно сохранение — это комбинация из:
После того как изменения отложены, ваша рабочая директория чиста, и вы можете переключаться между ветками, компилировать свой код или делать все, что вам нужно. После завершения этой задачи вы можете вернуться к своей первоначальной работе, извлекая или применяя сохраненные изменения.
Чтобы начать использовать stash в Git, вам нужно освоить некоторые основные команды. Вот основные из них:
Чтобы сохранить ваши изменения, используйте следующую команду:
git stash push
Это сохранит ваши локальные модификации и приведет вашу рабочую директорию в соответствие с коммитом HEAD. Это как будто вы никогда не делали этих изменений.
Часто полезно включить сообщение с вашими скрытыми изменениями для легкой идентификации:
git stash push -m "ваше сообщение о сохранении"
Это сообщение поможет вам вспомнить, какие изменения содержатся в этом сохранении без ссылок на изменения на уровне строк.
Чтобы увидеть список всех ваших сохраненных коллекций:
git stash list
Эта команда выведет список всех сохранений, которые вы сохранили, и их связанные сообщения.
Чтобы повторно применить последнее сохранение:
git stash apply
Эта команда применяет последнее сохранение к вашей текущей рабочей директории, но не удаляет его из списка сохранений.
Если вы хотите применить конкретное сохранение, используйте:
git stash apply stash@{n}
Замените stash@{n}
на конкретное сохранение, которое вы хотите применить, которое вы можете определить по выводу git stash list
.
Чтобы применить и сразу удалить последнее сохранение:
git stash pop
Это похоже на команду apply, но также удаляет примененное сохранение из вашего списка.
Если вы хотите удалить конкретное сохранение (без его применения), используйте:
git stash drop stash@{n}
Это уничтожит указанное сохранение.
Если вы хотите удалить все сохранения, команда:
git stash clear
Используйте эту команду с осторожностью, так как она навсегда уничтожит все сохраненные изменения.
Рассмотрим сценарий, когда вы разрабатываете новую функцию в ветке feature-xyz
и внесли несколько изменений в свою рабочую копию. Внезапно вам нужно исправить серьезную ошибку в основной ветке.
git status
git stash push -m "Сохранение работы над feature-xyz"
main
или любую другую ветку, над которой вам нужно работать:
git checkout main
git commit -a -m "Исправлена критическая ошибка"
git checkout feature-xyz
git stash pop
Если возникли конфликты, разрешите их, а затем продолжите работу.
Git Stash предлагает некоторую гибкость с более продвинутыми параметрами:
По умолчанию git stash push
будет откладывать только изменения в отслеживаемых файлах. Чтобы включить неотслеживаемые файлы:
git stash push -u
Это заархивирует как отслеживаемые, так и неотслеживаемые файлы.
Если вы также хотите отложить игнорируемые файлы (файлы, явно исключенные с помощью .gitignore
):
git stash push --all
Вы можете избирательно архивировать части файлов, используя:
git stash -p
Эта команда является интерактивной и позволяет выбрать конкретные хуNты для архивации.
Чтобы повторно применить хранимые изменения, включая изменения в индексе, используйте:
git stash apply --index
Имейте в виду, что это может вызвать конфликты, если есть конфликтующие изменения в индексе.
Хотя стэширование и извлечение стэшей, как правило, просты, могут возникнуть конфликты, особенно когда стэш применяется к обновленной базе кода. Если возникнут конфликты, Git помечает их как конфликты слияния. Вам придется отредактировать затронутые файлы, разрешить конфликты вручную и пометить их как разрешенные:
git add <file>
После разрешения вы можете продолжить работу и, в конечном итоге, отправить свои изменения.
Вот некоторые советы, которые сделают работу с Git Stash проще и эффективнее:
-m
для обозначения ваших стэшей. Это поможет легко их идентифицировать в дальнейшем.Git stash — это универсальный инструмент в арсенале разработчика, особенно полезный для сохранения незакомиченных работ и временного изменения ссылок. Понимание того, как эффективно использовать Git stash, позволяет разработчикам без проблем управлять изменениями в разных задачах, улучшая эффективность и гибкость их рабочего процесса.
От сохранения незавершенной работы до концентрации на важных ошибках, правильное внедрение возможностей git stash в ваш рабочий процесс может сделать управление изменениями кода проще и более управляемым. Когда вы почувствуете себя комфортно с Git stash, он станет неотъемлемой частью вашего инструментария для разработки.
Если вы найдете что-то неправильное в содержании статьи, вы можете