Git для новичков

Лев Коваленко — Senior DS Engineer

Что такое Git?

Git — распределённая система управления версиями.

Структура git

Как git версионирует?

Любая другая VCS

Git

Основные области в Git

Ветвление в git

Основные команды Git

Краткий перечень команд

Создание репозитория

Новый git repo

  • git init — инициализировать git репозиторий
  • git remote add <NAME> <URL> — добавить удаленный репозиторий

Существующий git repo

  • git clone <URL> — склонировать репозиторий
  • git clone <URL> <PATHNAME> — склонировать репозиторий в определенную директорию

Протоколы передачи для git:

  • FILE — мы имеем прямой доступ к файлам репозитория.
  • SSH — мы имеем доступ к файлам на сервере через ssh.
  • HTTP(S) — используем http в качестве приёма/передачи.

Добавление изменений

  • git add <FILENAME> — добавить файл в индекс
  • git commit -m "<MESSAGE>" — зафиксировать изменения файла
  • git status — текущее состояние файлов в репозитории

Работа с файлами

Удаление файлов

  • git rm <FILENAME> — удалить файл
  • git rm --cached <FILENAME> — удалить только из индекса

Перемещение файлов

  • git mv <FILE_FROM> <FILE_TO> — переместить/переименовать файл

Работа с ветками

Создание веток

  • git branch <NAME> — создать ветку

Переключение веток

  • git status — узнать текущую ветку
  • git checkout <NAME> — переключиться на ветку
  • git checkout -b <NAME> — создать и переключиться на ветку
  • git switch <NAME> — переключиться на ветку
  • git switch -c <NAME> — создать и переключиться на ветку
  • git switch - — вернуться к предыдущей извлечённой ветке

Объединение веток

  • git merge <BRANCH> — влить изменения из ветки BRANCH в текущую
  • git merge --ff <BRANCH> — “быстро перемотать” текущую ветку на BRANCH, если BRANCH - продолжение текущей ветки
  • git merge --no-ff <BRANCH> — создать коммит слияния ветки BRANCH в текущую
  • git merge --ff-only <BRANCH> — “быстро перемотать” текущую ветку на BRANCH по возможности

Конфликты

Работа с удаленными ветками

  • git remote show <remote> — получить список удаленных веток
  • <remote>/<branch> — название ветки слежения
  • git fetch <remote> — синхронизация вашего локального репозитория с удалённым
  • git push <remote> <branch> — отправить изменения в удаленный репозиторий в ветку <branch>
  • git push <remote> <branch>:<other branch> — отправить изменения из ветки <branch> в удаленный репозиторий в ветку <other branch>
  • git checkout -b <branch> <remote>/<branch> — подтянуть новую удаленную ветку в локальный репозиторий
  • git checkout --track <remote>/<branch> — подтянуть новую удаленную ветку в локальный репозиторий
  • git pull — получить изменения в текущую ветку из удаленной (при наличии ветки слежения)
  • git pull <remote> <branch> — получить изменения в текущую ветку из удаленной ветки <branch>

Просмотр истории изменений

  • git log — показать всю историю изменений
  • git log -p -2 — показать историю изменений с патчами
  • git log --stat — показать историю изменений со статистикой
  • git log --pretty=oneline — показать каждый коммит в одну строку
  • git log --pretty=oneline" --graph — показать историю изменений в виде ASCII графа
  • git log -S <function_name> — показать коммиты где была добавлена или удалена строка
  • git log -- <path/to/file> — показать коммиты где менялся только этот файл