Git


Бесплатный курс Основы работы с Git. Яндекс Практикум

Настройка

git configНастройка параметров Git, таких как имя пользователя и электронная почта.

Работа с репозиторием

git initИнициализация нового Git-репозитория в текущем каталоге.
git clone <url>Клонирование удаленного репозитория на локальную машину.
git statusПоказ текущего состояния репозитория, включая измененные и готовые к коммиту файлы.
git add <file>Добавление изменений в файл в индекс (staging area) для последующего коммита.
git commit -m "сообщение"Сохранение изменений в локальном репозитории с описанием коммита.
git logПросмотр истории коммитов в репозитории.
git diffПросмотр различий между текущими изменениями и последним коммитом.

Работа с ветками

git branchПросмотр списка всех веток в репозитории или создание новой ветки.
git checkout <branch-name>Переключение на указанную ветку.
git checkout -b <branch-name>Создание новой ветки и немедленный переход на неё.
git merge <branch-name>Слияние изменений из указанной ветки в текущую ветку.
git rebase <branch-name>Перенос изменений из одной ветки на другую для создания линейной истории коммитов.
git branch -d <branch-name>Удаление локальной ветки.

Работа с удаленными репозиториями

git remoteУправление удаленными репозиториями. Просмотр настроенных удаленных репозиториев.
git remote add <name> <url>Добавление нового удаленного репозитория.
git fetch <remote>Получение изменений из удаленного репозитория без слияния с текущей веткой.
git pull <remote> <branch>Получение изменений из удаленного репозитория и слияние с текущей веткой.
git push <remote> <branch>Отправка локальных коммитов в удаленный репозиторий.

История и отмена изменений

git reset <commit>Отмена коммита, возвращение к указанному коммиту.
git revert <commit>Создание нового коммита, который отменяет изменения, внесенные указанным коммитом.
git stashСохранение текущих изменений в отдельном месте и очистка рабочей директории.
git stash popВосстановление сохраненных изменений из stash и удаление их из stash.

Работа с тегами

git tagПросмотр всех тегов в репозитории.
git tag <tag-name>Создание нового тега на текущем коммите.
git push <remote> <tag-name>Отправка тега в удаленный репозиторий.
git tag -d <tag-name>Удаление локального тега.

Продвинутые команды

git cherry-pick <commit>Применение изменений из указанного коммита в текущую ветку.
git rebase -i <commit>Интерактивный rebase, позволяющий редактировать историю коммитов.
git ls-filesПросмотр списка файлов, отслеживаемых Git.
git grep <pattern>Поиск строки в файлах, отслеживаемых Git.
.gitignore file

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

Расположение

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

Формат

В файле .gitignore каждая строка определяет правило для игнорирования файлов и каталогов. Формат правил довольно прост и может включать:

Шаблоны файлов: Вы можете использовать символы подстановки (*, ?, []) для указания файлов и директорий.

Исключения: Можно использовать восклицательный знак (!) для указания файлов или директорий, которые должны быть включены, несмотря на общие правила игнорирования.

Комментарии: Строки, начинающиеся с решетки (#), являются комментариями и игнорируются Git.

Настройка для Android-проекта

.gradle и buildЭти каталоги содержат временные файлы и артефакты сборки, которые создаются во время процесса компиляции. Их следует игнорировать, так как они могут быть воссозданы при необходимости.
*.iml и .ideaЭти файлы и каталоги создаются IDE, такой как IntelliJ IDEA или Android Studio, и содержат информацию о проекте и настройках. Они не нужны в репозитории.
local.propertiesЭтот файл содержит локальные пути и настройки, такие как путь к SDK, и не должен быть коммитирован.
*.keystoreХранит ключи подписи приложения и является конфиденциальной информацией. Обычно его не следует включать в репозиторий.
# Каталог с кэшем и временными файлами сборки
build
build-cache
generated

# Конфиги Kotlin
.kotlin
.kotlin-js-store

# Зависимости, устанавливаемые через Gradle
.gradle

# Локальные файлы Android Studio
.idea/
*.iml

# Файлы конфигурации
local.properties

# Лог-файлы
*.log

# Артефакты сборки
*.apk

# Файлы пользовательских настроек
*.iml

# Ключи подписи приложения
*.keystore