Настройка под задачи команды

8. Настройка под задачи команды #

8.1. Работа с .gitignore #

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

Создание файла .gitignore #

  1. Создайте файл .gitignore в корне репозитория.
  2. Укажите пути или шаблоны файлов для исключения.

Пример:

# Игнорировать файлы логов
*.log

# Игнорировать временные файлы редактора
*.swp

# Игнорировать директорию build
build/

Примеры исключений #

  • Исключить все файлы .tmp:
    *.tmp
    
  • Исключить всю папку dist/:
    dist/
    
  • Исключить файлы, кроме одного:
    *.log
    !important.log
    

Использование глобального .gitignore #

Если есть файлы, которые вы хотите игнорировать во всех репозиториях (например, временные файлы IDE):

  1. Настройте глобальный .gitignore:
    git config --global core.excludesfile ~/.gitignore_global
    
  2. Создайте файл ~/.gitignore_global и добавьте шаблоны.

8.2. Настройка Git hooks #

Git hooks — это сценарии, которые выполняются на определённых этапах работы с Git.

Типы хуков #

  • Клиентские (local hooks): выполняются локально.
    Пример: pre-commit, pre-push.
  • Серверные (server hooks): выполняются на сервере.
    Пример: post-receive, update.

Настройка хуков #

  1. Найдите папку .git/hooks в репозитории.
  2. Создайте или отредактируйте скрипт нужного хука (например, pre-commit).
  3. Убедитесь, что файл имеет права на выполнение:
    chmod +x .git/hooks/pre-commit
    

Пример: проверка форматирования перед коммитом #

Скрипт для проверки файлов на соответствие стилю:

#!/bin/bash
if ! black --check .; then
  echo "Code is not formatted. Please run black."
  exit 1
fi

Использование менеджеров хуков #

Для централизованного управления хуками используйте инструменты, такие как Husky (для JavaScript) или pre-commit (мультиплатформенный инструмент).


8.3. Автоматизация с помощью Aliases #

Aliases позволяют создавать короткие команды для выполнения часто используемых операций.

Создание alias #

Добавьте alias в конфигурацию Git:

git config --global alias.имя команда

Пример:

  • Укороченный git status:
    git config --global alias.st status
    
  • Вызов git log в компактной форме:
    git config --global alias.lg "log --oneline --graph --all"
    

Просмотр созданных alias #

git config --get-regexp alias

Пример использования alias #

Вместо команды:

git log --oneline --graph --all

Вы просто вводите:

git lg

8.4. Настройка политики слияний и ревью #

Выбор стратегии слияния #

Git поддерживает различные стратегии слияния:

  1. merge (по умолчанию): сохраняет историю слияний.
    git merge имя_ветки
    
  2. rebase: переписывает историю, делая её линейной.
    git rebase имя_ветки
    

Настройка политики в репозитории #

Если команда работает в одной ветке, например main, можно настроить обязательный pull request для всех изменений.

  1. Настройка pull request в GitHub/GitLab:

    • Включите правило “Branch Protection Rules”.
    • Установите обязательный статус ревью перед слиянием.
  2. Настройка локальных правил для команды:
    Внедрите требования, например:

    • Все коммиты проходят ревью.
    • Используйте git rebase для фиксации истории перед слиянием.

Инструменты для ревью кода #

  • GitHub/GitLab: встроенные системы ревью.
  • Code Review Tools: инструменты, такие как Review Board или Phabricator.

Автоматизация проверок #

Настройте CI/CD для автоматической проверки кода на ошибки перед слиянием. Пример с GitHub Actions:

name: CI
on:
  pull_request:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Run Tests
      run: make test

Итоги #

  • .gitignore защищает репозиторий от ненужных файлов.
  • Git hooks автоматизируют проверки и процессы.
  • Aliases упрощают часто используемые команды.
  • Настройка политики слияний и ревью способствует лучшему качеству кода и стабильной работе команды.