Редактирование конфига
При установке git в первую очередь нужно указать имя пользователя и email, для этого нужно ввести команды, со своими значениями
git config --global user.name "Name" git config --global user.email example@example.com
Алиасы
Чтобы не вводить команды целиком можно создать их алиасы
git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status git config --global alias.unstage 'reset HEAD --' git config --global alias.last 'log -1 HEAD'после этого выполнение команд может осуществляться вводом соответствующего алиаса
git st
Создать локальный, клонировать удаленный репозиторий
Для создания локального репозитория нужно перейти в каталог и выполнить команду
git init
Для клонирования репозитория используется команда
git clone https://repo_name.gitее можно выполнять без инициализации репозитория
Еще можно осуществить клонирование из локального репозитория
git clone /srv/git/project.git
Отслеживание (индексация) файлов
Файлы находятся в двух состояниях: отслеживаемые и не отслеживаемые. Отслеживаемые файлы — это те файлы, о которых знает Git.
После редактирования файла git будет его рассматривать как измененный, нужно проиндексировать изменения и зафиксировать (сделать commit).
Посмотреть состояние файлов можно командой
git statusили сокращенный вывод
git status --short
Для того чтобы начать отслеживать новый файл, используется команда
git add <file>или чтоб начать отслеживать все добавленные файлы
git add .
Если после этого файл будет изменен, нужно снова сделать
git add .чтобы изменения проиндексировались.
Коммиты
Перед коммитом все файлы, которые должны в него войти должны быть проиндексированы.
Коммит можно сделать командой
git commitв этом случае откроется текстовый редактор (по умолчанию vim) и верхняя строка будет пустая, в нее нужно написать комментарий, затем сохранить и выйти командой :wq
Или без открытия текстового редактора указать комментарий в кавычках при выполнении команды
git commit -m "Message"
Чтобы ненужно было выполнять индексацию перед коммитом, можно указать ключ -a
git commit -a -m "Message"в этом случае git автоматически индексирует все уже отслеживаемые файлы позволяя обойтись без git add.
Перейти к комиту по id
git checkout <commit-id>
Вернуться к верхнему коммиту
git switch -
Более предпочтительная команда для перемещения к коммиту это
git reset <commit-id>при этом коммиты, которые были сделаны после него пропадают из лога, но изменения и индексация не отменяются, отменяется сам коммит
Если нужно вернуться к тому коммиту, с которого было произведено перемещение, его можно посмотреть в выводе команды
git reflogпоследние действия отображаются вверху, с номером 0.
Если нужно перейти к коммиту и чтоб при этом пропали изменения которые были сделаны после этого коммита, нужно выполнить команду
git reset --hard <commit-id>
Удалить последний коммит
git reset HEAD~
История коммитов
История коммитов выводится в обратном порядке (последние сверху) по команде
git log
Выводит только последний коммит
git log -1
Выводит сразу список изменений у каждого коммита
git log -p
Каждый коммит одной строкой
git log --pretty=oneline
Выводит граф, показывающий текущую ветку и историю слияний
git log --graph
Выведет лог по указанной ветке
git log <branch>
Выведет лог с коммитами в каждой строке
git log --oneline
Выведет лог со всеми параметрами
git log --oneline --decorate --graph --all
Удаление файлов
Для того чтобы удалить файл из Git, необходимо удалить его из отслеживаемых файлов, а затем выполнить коммит. Это позволяет сделать команда, которая также удаляет файл из рабочего каталога
git rm <file>в эту команду можно передавать файлы, каталоги и шаблоны
Можно удалить файл из индекса, оставив его при этом в рабочем каталоге командой
git rm --cached <file>
Отмена действия
Отмена индексации файла (то есть команды git add)
git restore --staged <file>
Отмена незакоммиченых изменений файла, состояния файла будет как в последнем коммите
git restore <file>
Отмена всех незакоммиченых изменений, состояние будет как в последнем коммите
git restore .
Ветки
Ветка — это файл, содержащий хэш коммита, на который она указывает. При этом файлы проекта не копируются.
Создание/переключение/слияние
Создание ветки
git branch <branch>
Переключение на ветку
git switch <branch>
Создание ветки и переход в нее
git switch -c <branch>
После окончания работы над веткой ее нужно слить с основной, для этого нужно перейти на основную ветку
git switch mainи сделать merge, при этом указать ветку которую нужно влить
git merge <branch>
Если ветка больше не нужна ее можно удалить командой
git branch -d <branch>
Если сделать две ветки, работать в одной из них, потом сделать merge в мастер, то в другой ветке этих изменений не будет, если нужно чтоб эти изменения появились в другой ветке, то нужно сделать merge из мастера или из первой ветки
git switch <branch>
git merge main
Копирование коммита из одной ветки в другую
Можно скопировать коммит из одной ветки в другую. Для этого нужно найти нужный коммит в ветке из которой нужно взять коммит, переключится на ветку, в которую должен быть добавлен коммит и выполнить команду
git cherry-pick <commit-id>
Вывод веток
Вывод списка веток
git branch
Вывод последнего коммита на каждой из веток
git branch -v
Вывод слитых/не слитых веток с текущей
git branch --merged
git branch --no-merged
Вывод всех веток, включая ветки удаленных репозиториев
git branch --all
Удаление
Удаление ветки если изменения из нее слиты
git branch -d <branch>
Удаление ветки со всеми наработками если изменения из нее не слиты
git branch -D <branch>
Удаление ветки в удаленном репозитории
git push origin --delete <branch>
Переименование
Переименование ветки локально
git branch --move <old-name> <new-name>
Отправка переименования на удаленный репозиторий
git push --set-upstream <remote-name> <new-name>
Старая ветка остается на удаленном репозитории, ее можно удалить
git push origin --delete <old-name>
Удаленные репозитории
origin - имя по умолчанию для удаленного репозитория.
Просмотр подключенных удаленных репозиториев
git remote
Вывод адресов удаленных репозиториев
git remote -v
Добавление удаленного репозитория
git remote add <remote-name> <address>
Просмотр удаленного репозитория (вывод адреса репозитория и его веток)
git remote show <remote-name>
Отключение от репозитория, при этом все отслеживаемые ветки и настройки, связанные с этим репозиторием, так же будут удалены
git remote remove <remote-name>
Переименование удалённого репозитория
git remote rename <remote-name> <new-remote-name>
Получение данных, которых еще нет в локальном репозитории, но без слияния их с локальными данными
git fetch <remote-name>После fetch нужно выполнить команду для слияния
git merge <remote-name>/main
Получение данных из удаленного репозитория и слияние их с локальными
git pull
Вывод размера репозитория, строка size содержит размер в килобайтах
git count-objects -v
Ссылки
- git-scm.com - электронная книга по git
- Принцип работы git
- Подробное описание работы git
- Использование git в vs code