Расширенные возможности

7. Расширенные возможности #

7.1. Stash: временное сохранение изменений #

git stash позволяет временно сохранить изменения в рабочей директории и вернуться к чистому состоянию, чтобы, например, переключиться на другую ветку.

Сохранение изменений в stash #

git stash

Сохранение с сообщением #

Вы можете указать описание для сохранённых изменений:

git stash save "Описание изменений"

Просмотр списка stash #

git stash list

Каждое сохранение будет отображаться с индексом (например, stash@{0}).

Восстановление изменений #

  1. Восстановить изменения и удалить их из списка stash:
    git stash pop
    
  2. Восстановить изменения без удаления из списка:
    git stash apply
    

Удаление stash #

  1. Удалить конкретный stash:
    git stash drop stash@{индекс}
    
  2. Удалить все 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

Удаление подмодуля #

  1. Удалите запись из .gitmodules и .git/config.
  2. Удалите файлы подмодуля:
    git rm --cached путь_к_подмодулю
    rm -rf путь_к_подмодулю
    

7.3. Работа с большими файлами: Git LFS #

Git LFS (Large File Storage) позволяет эффективно управлять большими файлами, которые нецелесообразно хранить в стандартном Git-репозитории.

Установка Git LFS #

  1. Установите Git LFS:

  2. Инициализируйте Git LFS для вашего репозитория:

    git lfs install
    

Добавление файлов в LFS #

  1. Укажите типы файлов, которые должны храниться через LFS:

    git lfs track "*.тип_файла"
    

    Пример:

    git lfs track "*.psd"
    
  2. Добавьте .gitattributes в репозиторий:

    git add .gitattributes
    git commit -m "Настройка Git LFS"
    

Просмотр файлов, отслеживаемых через LFS #

git lfs ls-files

7.4. Создание и применение патчей #

Патчи (patches) — это текстовые файлы, содержащие изменения, которые можно применить к другому репозиторию или ветке.

Создание патча #

  1. Создать патч из одного коммита:

    git format-patch -1 хэш_коммита
    
  2. Создать патч из нескольких коммитов:

    git format-patch хэш_начала..хэш_конца
    

Пример #

Если вы хотите создать патчи из последних двух коммитов:

git format-patch HEAD~2

Применение патча #

Чтобы применить патч к текущей ветке:

git apply имя_патча.patch

Применение с созданием коммита #

git am имя_патча.patch

Итоги #

  • git stash удобен для временного сохранения изменений.
  • Submodules позволяют эффективно работать с вложенными репозиториями.
  • Git LFS помогает управлять большими файлами, минимизируя нагрузку на репозиторий.
  • Патчи предоставляют удобный способ обмена изменениями между разработчиками.