Введение
Git - это распределенная система контроля версий, которая помогает отслеживать изменения в коде и эффективно работать в команде. В этой статье мы рассмотрим основы Git и научимся использовать его в повседневной работе.
Что такое Git?
- Контроль версий: Отслеживание изменений
- Распределенность: Локальная работа
- Ветвление: Параллельная разработка
- Слияние: Объединение изменений
Начало работы
1. Установка Git
Установка на разных системах
1
2
3
4
5
6
7
8
9
| # Windows (Chocolatey)
choco install git
# Linux (Ubuntu)
sudo apt update
sudo apt install git
# macOS (Homebrew)
brew install git
|
Настройка Git
1
2
3
4
5
6
7
8
| # Настройка имени пользователя
git config --global user.name "Your Name"
# Настройка email
git config --global user.email "your.email@example.com"
# Проверка настроек
git config --list
|
2. Первый репозиторий
Инициализация репозитория
1
2
3
4
5
6
7
8
| # Создание нового репозитория
git init my-project
cd my-project
# Создание первого коммита
echo "# My Project" > README.md
git add README.md
git commit -m "Initial commit"
|
Основные команды
1. Работа с файлами
Добавление файлов
1
2
3
4
5
6
7
8
| # Добавление конкретного файла
git add filename.txt
# Добавление всех файлов
git add .
# Добавление с проверкой статуса
git status
|
Создание коммитов
1
2
3
4
5
| # Создание коммита с сообщением
git commit -m "Add new feature"
# Создание коммита с подробным описанием
git commit -m "Add new feature" -m "Detailed description of changes"
|
2. Просмотр истории
Просмотр коммитов
1
2
3
4
5
6
7
8
| # Просмотр истории коммитов
git log
# Просмотр истории с графиком
git log --graph --oneline --all
# Просмотр изменений в файле
git log -p filename.txt
|
Просмотр изменений
1
2
3
4
5
6
7
8
| # Просмотр изменений в рабочей директории
git diff
# Просмотр изменений в индексе
git diff --staged
# Просмотр изменений между коммитами
git diff commit1 commit2
|
Ветвление
1. Создание веток
Работа с ветками
1
2
3
4
5
6
7
8
| # Создание новой ветки
git branch feature-branch
# Переключение на ветку
git checkout feature-branch
# Создание и переключение одной командой
git checkout -b feature-branch
|
Слияние веток
1
2
3
4
5
6
7
8
9
10
11
| # Слияние ветки в текущую
git merge feature-branch
# Слияние с отменой коммита слияния
git merge --no-ff feature-branch
# Разрешение конфликтов
git status
# Редактирование файлов
git add .
git commit -m "Resolve merge conflicts"
|
2. Удаленное взаимодействие
Работа с удаленным репозиторием
1
2
3
4
5
6
7
8
| # Добавление удаленного репозитория
git remote add origin https://github.com/username/repo.git
# Отправка изменений
git push -u origin main
# Получение изменений
git pull origin main
|
Продвинутые техники
1. Временное сохранение
Stash
1
2
3
4
5
6
7
8
9
10
11
| # Сохранение изменений
git stash save "WIP: Working on feature"
# Просмотр сохраненных изменений
git stash list
# Применение сохраненных изменений
git stash pop
# Удаление сохраненных изменений
git stash drop
|
2. Отмена изменений
Отмена коммитов
1
2
3
4
5
6
7
8
| # Отмена последнего коммита
git reset --soft HEAD~1
# Отмена коммита с удалением изменений
git reset --hard HEAD~1
# Отмена изменений в файле
git checkout -- filename.txt
|
Работа в команде
1. Коллаборация
Создание Pull Request
1
2
3
4
5
6
7
8
9
| # Создание ветки для новой функции
git checkout -b feature/new-feature
# Внесение изменений
git add .
git commit -m "Add new feature"
# Отправка изменений
git push origin feature/new-feature
|
Code Review
1
2
3
4
5
6
7
8
9
10
11
| # Получение изменений
git fetch origin
git checkout feature/new-feature
# Просмотр изменений
git diff main..feature/new-feature
# Внесение правок
git add .
git commit --amend
git push -f origin feature/new-feature
|
2. Разрешение конфликтов
Стратегии слияния
1
2
3
4
5
6
7
8
9
10
11
| # Слияние с сохранением истории
git merge --no-ff feature-branch
# Перебазирование изменений
git rebase main
# Разрешение конфликтов
git status
# Редактирование файлов
git add .
git commit -m "Resolve conflicts"
|
Интеграция с IDE
1. Visual Studio Code
Настройка Git в VS Code
1
2
3
4
5
| {
"git.enableSmartCommit": true,
"git.autofetch": true,
"git.confirmSync": false
}
|
2. JetBrains IDEs
Настройка Git в IntelliJ
- Включение Git в настройках
- Настройка SSH ключей
- Интеграция с GitHub
CI/CD интеграция
1. GitHub Actions
Настройка workflow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build
run: |
npm install
npm run build
|
2. GitLab CI
Настройка pipeline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| stages:
- build
- test
- deploy
build:
stage: build
script:
- npm install
- npm run build
test:
stage: test
script:
- npm test
deploy:
stage: deploy
script:
- echo "Deploy to production"
|
Заключение
Git - это мощный инструмент для управления версиями кода. Понимание основ Git и правильное использование его возможностей поможет эффективно работать в команде и поддерживать качество кода.