Шпаргалка по Git
Первоначальная настройка
Задаём имя и почту
$ git config --global user.name "Ivan Ivanov"
$ git config --global user.email ivan.ivanov@email.com
Переименовываем главную ветку с master на main
$ git config --global init.defaultBranch main
Основные команды
git init
- Создание репозитория в текущей папке
git add -A
- Добавить (обновить) все файлы в буферную зону
git reset
- Сброс буферной зоны
git add filename
- Добавить (обновить) файл в буферной зоне
git commit -a -m"комментарий"
- Сохранить все добавленные измененые файлы в репозиторий
git push
- Отправка коммита в удалённый репозиторий
git pull
- Приём коммита с удалённого репозитория
git status
- Посмотреть статус файлов
git branch name_branch
- Создать новую ветку
git checkout -b name_branch
- Создать новую ветку и перейти в неё
git checkout name_branch
- Переключиться на другую ветку
git branch -D name_branch
- Удаление локальной ветки
git push origin --delete name_branch
- Удаление удаленной ветки
git config --list --show-origin
- Выводит список всех настроек и показывает где именно они заданы
Работа с тегами
git tag v1
- Создание тега
git checkout v1
- Переключение по имени тегами
git tag
- Вывести список тегов
Удаление коммитов
Команда git reset
перемещает указатель HEAD на выбранное количество коммитов назад в локальном репозитории.
У неё есть три режима работы:
git reset --soft commit_hash
- изменения остаются в разделе проиндексированных файлов и рабочем каталоге.
git reset --mixed commit_hash
- изменения остаются только в рабочем каталоге.
git reset --hard commit_hash
- полностью удаляет все изменения.
Флаг --mixed
стоит по умолчанию. Команду можно сократить до git reset commit_hash
Для удаления последнего коммита вместо хэша можно указать первого родителя коммита git reset HEAD~
Если коммиты для удаления уже отправлены в удалённый репозиторий, то можно переписать историю коммитов с помощью команды git push --force origin main
. Тем самым перезаписав удаленную ветку main
на локальную версию ветки main
.
Крайне не рекомендуется переписывать историю в удаленном репозитории для предотвращения потери данных и конфликтов в работе других разработчиков.