Шпаргалка Git
Шпаргалка по Git
Шпаргалка Git
Git — это распределенная система управления версиями, которая позволяет отслеживать изменения в коде и работать совместно с другими разработчиками.
Настройка Git
Перед началом работы необходимо настроить Git с помощью следующих команд:
Установка имени пользователя:
git config --global user.name "Ваше имя"
Это имя будет отображаться в информации о коммитах.
Установка электронной почты:
git config --global user.email "[email protected]"
Email также будет отображаться в коммитах.
Проверка текущих настроек:
git config --list
Показывает все текущие настройки Git.
Настройка предпочтительного редактора:
git config --global core.editor "vim"
Устанавливает редактор по умолчанию для Git.
Выбор отображения цветов:
git config --global color.ui auto
Включает цветное отображение в командной строке.
Создание и Клонирование Репозитория
Инициализация нового репозитория:
git init
Создает новый локальный репозиторий в текущей директории.
Клонирование существующего репозитория:
git clone <URL>
Клонирует удаленный репозиторий в новую директорию.
Пример:
git clone https://github.com/user/repo.git
Основные Команды
Статус и Добавление Файлов
Проверка статуса репозитория:
git status
Показывает отслеживаемые и неотслеживаемые файлы, изменения и статус индекса.
Добавление файлов в индекс:
git add <файл>
Добавляет указанный файл в индекс (staging area).
Добавление всех файлов:
git add .
Добавляет все новые и измененные файлы в индекс.
Коммит изменений
Создание коммита:
git commit -m "Сообщение коммита"
Фиксирует изменения с указанным сообщением.
Автоматическое добавление и коммит:
git commit -a -m "Сообщение коммита"
Добавляет изменения отслеживаемых файлов и создает коммит.
Работа с Удаленными Репозиториями
Отправка изменений:
git push
Отправляет коммиты в удаленный репозиторий по умолчанию.
Отправка на определенную ветку:
git push origin <ветка>
Получение изменений:
git pull
Забирает изменения из удаленного репозитория и сливает их с текущей веткой.
Разница между
git fetch
иgit pull
:git fetch
загружает изменения из удаленного репозитория, но не сливает их.git pull
сочетаетgit fetch
иgit merge
.
Работа с Ветками
Просмотр локальных веток:
git branch
Выводит список всех локальных веток.
Создание новой ветки:
git branch <название_ветки>
Создает новую ветку.
Переключение между ветками:
git checkout <название_ветки>
Переключается на указанную ветку.
Создание и переключение на новую ветку:
git checkout -b <название_ветки>
Создает новую ветку и сразу переключается на нее.
Слияние веток:
git merge <название_ветки>
Сливает указанную ветку с текущей.
Удаление ветки:
git branch -d <название_ветки>
Удаляет локальную ветку. Если ветка не была слита, используйте принудительное удаление:
git branch -D <название_ветки>
Работа с Удаленными Ветками
Просмотр удаленных веток:
git branch -r
Удаление удаленной ветки:
git push origin --delete <название_ветки>
Получение всех веток и тегов:
git fetch --all
Просмотр Истории
Полная история коммитов:
git log
Показывает историю коммитов с деталями.
Краткий формат истории:
git log --oneline
Отображает историю в одну строку на коммит.
Графическое отображение:
git log --graph --all --decorate --oneline
Показывает историю в виде графа, отображая ветки и коммиты.
Фильтрация по автору:
git log --author="Имя"
Поиск по сообщению коммита:
git log --grep="Текст поиска"
Сравнение Изменений
Просмотр изменений в рабочем каталоге:
git diff
Показывает изменения, которые еще не добавлены в индекс.
Просмотр изменений в индексе:
git diff --staged
Показывает изменения, подготовленные для коммита.
Сравнение между двумя ветками:
git diff <ветка1> <ветка2>
Отмена Изменений
Отмена изменений в файле:
git checkout -- <файл>
Возвращает файл к последнему коммиту, отменяя несохраненные изменения.
Убрать файл из индекса:
git reset HEAD <файл>
Убирает файл из индекса, оставляя его изменения в рабочем каталоге.
Отмена последнего коммита (с сохранением изменений):
git reset --soft HEAD~1
Сбрасывает коммит, оставляя изменения в индексе.
Отмена последнего коммита (с удалением изменений):
git reset --hard HEAD~1
Полностью удаляет последний коммит и все изменения.
Создание обратного коммита:
git revert <хеш_коммита>
Создает новый коммит, отменяющий указанный коммит.
Работа с Удаленными Репозиториями
Просмотр удаленных репозиториев:
git remote -v
Показывает имена и URL удаленных репозиториев.
Добавление удаленного репозитория:
git remote add origin <URL>
Добавляет удаленный репозиторий с именем
origin
.Переименование удаленного репозитория:
git remote rename <старое_имя> <новое_имя>
Удаление удаленного репозитория:
git remote remove <имя>
Теги
Просмотр тегов:
git tag
Показывает список всех тегов.
Создание аннотированного тега:
git tag -a v1.0 -m "Версия 1.0"
Создание легковесного тега:
git tag v1.0
Просмотр информации о теге:
git show v1.0
Отправка тегов в удаленный репозиторий:
git push origin v1.0
Отправляет указанный тег.
Отправка всех тегов:
git push origin --tags
Удаление тега локально:
git tag -d v1.0
Удаление тега в удаленном репозитории:
git push origin :refs/tags/v1.0
Сохранение Изменений (Stash)
Сохранение незаконченных изменений:
git stash
Сохраняет текущие изменения и очищает рабочий каталог.
Просмотр сохраненных изменений:
git stash list
Применение последних сохраненных изменений:
git stash apply
Применение и удаление из списка:
git stash pop
Удаление сохраненных изменений:
git stash drop
Сохранение с сообщением:
git stash save "Описание"
Применение конкретного stash:
git stash apply stash@{2}
Работа с Submodules (Подмодулями)
Добавление подмодуля:
git submodule add <URL> <путь>
Инициализация и обновление подмодулей:
git submodule update --init --recursive
Обновление подмодулей до последних версий:
git submodule update --remote
Удаление подмодуля:
git submodule deinit -f <путь_к_подмодулю> rm -rf .git/modules/<путь_к_подмодулю> git rm -f <путь_к_подмодулю>
Ребейз (Rebase)
Перебазирование текущей ветки на другую:
git rebase <ветка>
Применение интерактивного ребейза:
git rebase -i HEAD~3
Позволяет изменить последние три коммита (объединить, изменить сообщения и т.д.).
Отмена ребейза:
git rebase --abort
Продолжение ребейза после разрешения конфликтов:
git rebase --continue
Инструменты для Решения Конфликтов
Показать файлы с конфликтами:
git diff --name-only --diff-filter=U
Отметить конфликт как разрешенный:
git add <файл>
Продолжить процесс после разрешения конфликтов:
git merge --continue
или
git rebase --continue
Дополнительные Полезные Команды
Просмотр автора изменений в файле:
git blame <файл>
Показывает, кто и когда изменял каждую строку в файле.
Просмотр содержимого конкретного коммита:
git show <хеш_коммита>
Удаление файла из репозитория и файловой системы:
git rm <файл>
Переименование или перемещение файла:
git mv <старое_имя> <новое_имя>
Очистка неотслеживаемых файлов:
git clean -f
Удаляет неотслеживаемые файлы из рабочей директории.
Удаление неотслеживаемых директорий:
git clean -fd
Поиск по истории коммитов:
git log -S "фрагмент_кода"
Показывает коммиты, в которых добавлен или удален указанный фрагмент кода.
Изменение последнего коммита:
git commit --amend
Позволяет изменить сообщение последнего коммита или добавить забытые изменения.
Алиасы (Псевдонимы)
Вы можете создать собственные алиасы для часто используемых команд:
Создание алиаса:
git config --global alias.co checkout
Теперь вы можете использовать
git co
вместоgit checkout
.Пример полезных алиасов:
git config --global alias.st status git config --global alias.br branch git config --global alias.cm commit git config --global alias.df diff git config --global alias.lg "log --graph --oneline --all --decorate"
Настройка .gitignore
Файл .gitignore
используется для указания файлов и директорий, которые Git должен игнорировать.
Пример содержимого .gitignore:
# Игнорировать все файлы с расширением .log
*.log
# Игнорировать директорию build/
build/
# Игнорировать файл secrets.txt
secrets.txt
Получение Справки
Общая справка:
git help
Справка по конкретной команде:
git help <команда>
или
git <команда> --help
Полезные Практики
Регулярно коммитьте небольшие изменения.
Используйте понятные сообщения коммитов.
Старайтесь избегать работы в ветке
master
илиmain
.Периодически синхронизируйтесь с удаленным репозиторием.
Перед слиянием обновите свою ветку:
git fetch origin git merge origin/main
Разрешайте конфликты сразу после их возникновения.
Это подробная шпаргалка по Git, которая поможет вам в повседневной работе с системой контроля версий. Практикуйтесь и изучайте документацию для более глубокого понимания возможностей Git.
Last updated