Шпаргалка по Git Время чтения: 2 мин. 38 просмотров Git – это распределённая система контроля версий, предназначенная для отслеживания изменений в файлах и управления историей проекта. Чаще всего Git используется в разработке программного обеспечения, однако он отлично подходит и для работы с документацией, учебными проектами и любыми другими файлами, где важно сохранять историю изменений.Главное преимущество Git заключается в том, что каждый разработчик имеет полную копию репозитория у себя локально. Это делает работу быстрой, надёжной и удобной даже без постоянного доступа к интернету. Благодаря Git команды могут параллельно разрабатывать функциональность, объединять изменения и безопасно управлять кодовой базой. Первоначальная настройка Git Перед началом работы необходимо указать данные пользователя. Эти сведения будут автоматически добавляться к каждому коммиту. Установка имени автора: git config --global user.name "NAME" Установка электронной почты автора: git config --global user.email "EMAIL" Эти настройки выполняются один раз и применяются ко всем репозиториям на компьютере. Базовые операции с репозиторием Git Создание репозитория Для инициализации нового проекта используется команда: git init PROJECT_NAME Она создаёт скрытую директорию .git, в которой хранится вся история проекта. Клонирование репозитория Чтобы получить удалённый проект локально: git clone URL Git скачает файлы и всю историю изменений. Получение обновлений Загрузка изменений с удалённого репозитория без слияния с локальным: git fetch Загрузка изменений с удалённого репозитория и объединение изменений с локальным (fetch + merge): git pull Работа с изменениями в Git Проверка состояния проекта Выводит изменения, которые нуждаются в фиксации: git status Добавление файлов в индекс Добавление конкретных файлов: git add FILE1 FILE2 Добавление всех изменений: git add . Удаление и переименование файлов Удаление файла с фиксацией в индексе: git rm FILE1 Удаление из индекса без физического удаления: git rm --cached FILE1 Переименование файла: git mv SOURCE_FILE NEW_FILE Просмотр различий Показывает различия по внесённым изменениям в ещё не проиндексированных файлах: git diff Показывает различия между проиндексированной и последней зафиксированной версиями файлов: git diff --staged Коммиты и история изменений Фиксирует проиндексированные изменения и сохраняет их в историю версий: git commit -m "DESCRIPTION" Изменение сообщения последнего комита: git commit –amend -m "NEW_DESCRIPTION" Просмотр истории Выводит полную историю изменений проекта: git log Выводит краткую историю изменений проекта: git log --oneline Выводит историю изменений проекта виде графа: git log --graph --oneline --stat Выводит историю изменений конкретного файла: git log --follow FILE1 Выводит информацию и показывает изменения в выбранном коммите: git show HASH_COMMIT Откат изменений в Git Откат изменений с сохранением файлов: git reset HASH_COMMIT Откат изменений вместе с состоянием рабочей директории до указанного коммита: git reset --hard HASH_COMMIT Ветвления в Git Просмотр веток Выводит список веток: git branch Выводит список веток включая на удалённом репозитории: git branch -a Создание и переключение Создание новой ветки: git branch BRANCH_NAME Переключение на ветку: git checkout BRANCH_NAME Удаление и переименование Удаление ветки: git branch -d BRANCH_NAME Удаление ветки на сервере: git push origin --delete BRANCH_NAME Переименование ветки: git branch –m BRANCH_NAME NEW_BRANCH_NAME Слияние веток Слияние веток (вносит изменения указанной ветки в текущую ветку): git merge BRANCH_NAME Практические примеры использования Git Отправка изменений в удалённый репозиторий Стандартный рабочий процесс выглядит так.Добавление изменений в индекс: git add . Создание коммита: git commit -m "Описание нового коммита" Отправка изменений: git push Удаление последних коммитов Данный сценарий используется, когда необходимо полностью удалить последние коммиты из истории проекта. Команда откатывает текущую ветку на два коммита назад и приводит рабочую директорию в состояние выбранного коммита. Все изменения, сделанные после него, будут безвозвратно удалены: git reset --hard HEAD~2 Команда принудительно переписывает историю на удалённом репозитории, синхронизируя её с локальной версией. git push --force Использование в общей ветке может привести к потере работы других разработчиков. Объединение коммитов Интерактивный rebase позволяет изменить историю коммитов, объединив несколько изменений в один логически завершённый коммит. Это особенно полезно перед отправкой изменений в основную ветку проекта.Командой объединим 5 последних изменений в один коммит: git rebase -i HEAD~5 В открывшемся редакторе первый коммит оставляется с pick, а у остальных используется squash. В результате Git объединяет их в один коммит и предлагает задать новое описание. pick i9j0k1l Thrid commit squash e5f6g7h Second commit squash a1b2c3d First commit После завершения операции обычно требуется принудительная отправка изменений: git push --force Откат изменений без удаления истории Этот способ используется, когда необходимо отменить изменения, не переписывая историю коммитов. Git возвращает файлы к состоянию двух коммитов назад, после чего создаётся новый коммит, фиксирующий откат.Такой подход считается безопасным для командной работы, так как история проекта остаётся неизменной и прозрачной для всех участников. Откат 2 последних коммитов: git checkout HEAD~2 -- . Создание нового коммита: git commit -m "Откат изменений на 2 коммита" Отправка изменений: git push Перенос коммита в другую ветку Сценарий позволяет применить конкретный коммит из одной ветки в другую. Это удобно, если нужное изменение было сделано не в той ветке или требуется перенести исправление без полного слияния веток. Определить хэш переносимого коммита: git log --oneline Переключение на ветку в которую требуется перенести коммит: git checkout BRANCH_NAME Перенос коммита: git cherry_pick HASH_COMMIT Отмена git add Если файл был случайно добавлен в индекс с помощью git add, можно отменить. Файл останется изменённым, но будет исключён из индекса и не попадёт в коммит: git reset FILE1 Разрешение конфликтов слияния При возникновении конфликтов во время merge или rebase Git может запустить внешний инструмент для визуального разрешения конфликтов. Инструмент показывает различия между версиями файлов и помогает выбрать правильный вариант: git mergetool Запоминание пароля при работе по HTTPS Сохранение пароля на 15 минут Git временно сохраняет введённые учётные данные, избавляя от повторного ввода пароля при каждом запросе: git config --global credential.helper cache Сохранение пароля на длительное время Можно настроить и более долгий период: git config --global credential.helper "cache --timeout=3600" Параметр timeout задаётся в секундах и позволяет настроить удобный период хранения пароля. Для постоянной работы лучше использовать SSH-ключи – это безопаснее и удобнее. Вперёд – Системы контроля версий GitLab