leafleafleafDocy banner shape 01Docy banner shape 02Man illustrationFlower illustration

Шпаргалка по Git

Время чтения: 2 мин. 37 просмотров

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 задаётся в секундах и позволяет настроить удобный период хранения пароля.

Leave a Comment

Поделиться этой страницей

Шпаргалка по Git

Или скопируйте ссылку

СОДЕРЖИМОЕ