Основные команды Git
git init
- Описание: Инициализирует новый Git репозиторий. Эта команда создает новую папку
.git
, содержащую все необходимые файлы репозитория. - Пример:
git init
git clone
- Описание: Клонирует репозиторий из существующего URL. Это полезно для получения копии существующего репозитория.
- Пример:
git clone https://github.com/user/repo.git
git add
- Описание: Добавляет файлы в индекс для последующего коммита.
- Пример:
git add <file>
илиgit add .
(для добавления всех измененных файлов)
git commit
- Описание: Фиксирует изменения в репозитории. Коммиты являются основными строительными блоками истории Git.
- Пример:
git commit -m "Ваше сообщение о коммите"
git push
- Описание: Отправляет локальные коммиты на удаленный репозиторий.
- Пример:
git push origin main
git pull
- Описание: Получает изменения с удаленного репозитория и объединяет их с текущей веткой.
- Пример:
git pull origin main
git branch
- Описание: Позволяет управлять ветками.
- Примеры:
git branch
(просмотреть список веток)git branch <new-branch>
(создать новую ветку)
git checkout
- Описание: Переключает ветки или восстанавливает файлы рабочего каталога.
- Примеры:
git checkout <branch-name>
(переключиться на другую ветку)git checkout -b <new-branch>
(создать и переключиться на новую ветку)
git merge
- Описание: Объединяет изменения из одной ветки в другую с сохранением всей истории коммитов.
Пример использования
Допустим, у вас есть две ветки: main
и feature
. Ветка feature
содержит новые изменения, которые вы хотите добавить в основную ветку main
.
- Переключитесь на ветку
main
:
bash
git checkout main
- Объедините ветку feature с main:
bash
git merge feature
Это добавит изменения из ветки feature в main. Если в процессе возникнут конфликты, вам нужно будет их разрешить.
Визуализация
Вот пример того, как выглядит история коммитов после git merge
:
A - B - C - F (main)
\ /
D - E (feature)
Здесь F
является коммитом слияния, который объединяет изменения из веток main (A-B-C)
и feature (D-E)
.
git rebase
- Описание: Объединяет изменения из одной ветки в другую, при этом создавая более линейную историю изменений. В отличие от
git merge
,git rebase
не сохраняет полную историю ветвления, а "переписывает" коммиты, что может привести к более чистой истории, но с потерей оригинальной структуры ветвления.
Пример использования
Допустим, вы работаете над функционалом в ветке feature
и хотите включить в неё последние изменения из main
.
- Переключитесь на ветку
feature
:
bash
git checkout feature
- Перебазируйте ветку
feature
наmain
:
bash
git rebase main
Это переместит все коммиты из feature
на вершину ветки main
. Если возникнут конфликты, вам нужно будет их разрешить перед завершением процесса rebase
.
Визуализация
До git rebase
:
main: A - B - C
\
feature: D - E
После git rebase
:
main: A - B - C
\
feature: D' - E'
(Коммиты D
и E
были "переписаны" на основе C
)