Первоначальная настройка
Настройка информации о пользователе для всех локальных репозиториев
git config --global user.name "имя" # Установка имени
git config --global user.email "адрес электронной почты" # Установка почтыСоздание репозитория
git initМожно так же в команде после init написать название для репозитория, по умолчанию используется имя папки в котором создается репозиторий.
git clone [url-адрес]Скачивает репозиторий.
Внесение изменений
git status - перечисляет все новые или изменённые файлы, которые нуждаются в фиксации
git diff - показывает различия по внесённым изменениям в ещё не проиндексированных файлах
git add [файл] - индексирует указанный файл для последующего коммита (добавляет файл в список на коммит)
git diff --staged - показывает различия между проиндексированной и последней зафиксированной версиями файлов
git reset [файл] - отменяет индексацию указанного файла, при этом сохраняет его содержимое
git commit -m "[сообщение с описанием]" - фиксирует проиндексированные изменения и сохраняет их в историю версий
Ветки
git branch - список веток репозитория с указанием выбранной ветки
git branch [имя ветки] - создаёт новую ветку
git switch -c [имя ветки] - переключается на выбранную ветку и обновляет рабочую директорию до её состояния
git merge [имя ветки] - вносит изменения указанной ветки в текущую ветку
git branch -d [имя ветки] - удаляет выбранную ветку
Операции с файлами
git rm [файл] - удаляет конкретный файл из рабочей директории и индексирует его удаление
git rm --cached [файл] - убирает конкретный файл из контроля версий, но физически оставляет его на своём месте
git mv [оригинальный файл] [новое имя] - перемещает и переименовывает указанный файл, сразу индексируя его для последующего коммита
Удалить файл из истории репозитория
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch <myfile>' \
--prune-empty --tag-name-filter cat -- --all
git push origin --force --all
git push origin --force --tagsИгнорирование некоторых файлов
*.log
build/
temp-*Git будет игнорировать файлы и директории, перечисленные в файле .gitignore с помощью wildcard синтаксиса.
git ls-files --others --ignored --exclude-standard - список всех игнорируемых файлов в текущем проекте
Сохранение фрагментов
git stash - временно сохраняет все не зафиксированные изменения отслеживаемых файлов
git stash pop - восстанавливает состояние ранее сохранённых версий файлов
git stash list - выводит список всех временных сохранений
git stash drop - сбрасывает последние временно сохраненныe изменения
Просмотр истории
git log - история коммитов для текущей ветки
git log --follow [файл] - история изменений конкретного файла, включая его переименование
git diff [первая ветка]...[вторая ветка] - показывает разницу между содержанием коммитов двух веток
git show [коммит] - выводит информацию и показывает изменения в выбранном коммите
Откат коммитов
git reset [коммит] - отменяет все коммиты после заданного, оставляя все изменения в рабочей директории
$ git reset --hard [коммит] - сбрасывает всю историю вместе с состоянием рабочей директории до указанного коммита.
Откат репозитория с сохранением истории
git fetch origin
git checkout 8e730b8439 -- .
git commit -am "Откат на комит 8e730b8439"
git push origin HEADСинхронизация с удалённым репозиторием
git fetch [удалённый репозиторий] - скачивает всю историю из удалённого репозитория
git merge [удалённый репозиторий]/[ветка] - вносит изменения из ветки удалённого репозитория в текущую ветку локального репозитория
git push [удалённый репозиторий] [ветка]- загружает все изменения локальной ветки в удалённый репозиторий
git pull - загружает историю из удалённого репозитория и объединяет её с локальной. pull = fetch + merge