7. Расширенные возможности #
7.1. Stash: временное сохранение изменений #
git stash
позволяет временно сохранить изменения в рабочей директории и вернуться к чистому состоянию, чтобы, например, переключиться на другую ветку.
Сохранение изменений в stash #
git stash
Сохранение с сообщением #
Вы можете указать описание для сохранённых изменений:
git stash save "Описание изменений"
Просмотр списка stash #
git stash list
Каждое сохранение будет отображаться с индексом (например, stash@{0}
).
Восстановление изменений #
- Восстановить изменения и удалить их из списка stash:
git stash pop
- Восстановить изменения без удаления из списка:
git stash apply
Удаление stash #
- Удалить конкретный stash:
git stash drop stash@{индекс}
- Удалить все stash:
git stash clear
7.2. Submodules: работа с вложенными репозиториями #
Submodules позволяют интегрировать один Git-репозиторий в качестве подрепозитория другого. Это полезно для работы с проектами, зависящими от внешних библиотек.
Добавление подмодуля #
git submodule add URL путь_к_подмодулю
Пример:
git submodule add https://github.com/example/library libs/library
Инициализация и обновление подмодулей #
После клонирования репозитория с подмодулями:
git submodule init
git submodule update
Обновление подмодулей до последней версии #
git submodule update --remote
Удаление подмодуля #
- Удалите запись из
.gitmodules
и.git/config
. - Удалите файлы подмодуля:
git rm --cached путь_к_подмодулю rm -rf путь_к_подмодулю
7.3. Работа с большими файлами: Git LFS #
Git LFS (Large File Storage) позволяет эффективно управлять большими файлами, которые нецелесообразно хранить в стандартном Git-репозитории.
Установка Git LFS #
Установите Git LFS:
- Linux: через пакетный менеджер (
apt install git-lfs
или аналогичный). - Windows/Mac: скачайте с официального сайта Git LFS.
- Linux: через пакетный менеджер (
Инициализируйте Git LFS для вашего репозитория:
git lfs install
Добавление файлов в LFS #
Укажите типы файлов, которые должны храниться через LFS:
git lfs track "*.тип_файла"
Пример:
git lfs track "*.psd"
Добавьте
.gitattributes
в репозиторий:git add .gitattributes git commit -m "Настройка Git LFS"
Просмотр файлов, отслеживаемых через LFS #
git lfs ls-files
7.4. Создание и применение патчей #
Патчи (patches) — это текстовые файлы, содержащие изменения, которые можно применить к другому репозиторию или ветке.
Создание патча #
Создать патч из одного коммита:
git format-patch -1 хэш_коммита
Создать патч из нескольких коммитов:
git format-patch хэш_начала..хэш_конца
Пример #
Если вы хотите создать патчи из последних двух коммитов:
git format-patch HEAD~2
Применение патча #
Чтобы применить патч к текущей ветке:
git apply имя_патча.patch
Применение с созданием коммита #
git am имя_патча.patch
Итоги #
git stash
удобен для временного сохранения изменений.- Submodules позволяют эффективно работать с вложенными репозиториями.
- Git LFS помогает управлять большими файлами, минимизируя нагрузку на репозиторий.
- Патчи предоставляют удобный способ обмена изменениями между разработчиками.