Системы контроля версий (5) (GIT) (Конспект. Hexlet)

Введение 

Контроль версий 

  1. snapshot(снепшот) – измененный файл
  2. diff (диф) – только изменения
  3. Revision(ревизия) – любое зафиксированное изменение в системе контроля версий
  4. Команда *unix diff – сравнение файлов
  5. Команда *unix patch – накладывание diff на файл

Системы контроля версий 

  1. commit (коммит) – процесс создания revision в СКВ (системе контроля версий)
  2. требования к commit
    1. Именование. Коммиты должны иметь осмысленное описание. Например: “fix scrolling”.
    2. Атомарность. Коммит должен решать одну задачу и желательно от начала до конца.
  3. поколения СКВ
    1. RCS, SCCS
    2. CVS, SourceSafe, Subversion
    3. Git, Bazaar, Mercurial

 Основы гит 

  1. Установка GIT
    1. mac: brew install git
    2. ubuntu: sudo apt install git
    3. windows: choco install git (chocolatey.org либо gitforwindows если вы не знакомы с пакетными менеджерами)
  2. Настройка имени и почты
    1. $ git config –global user.name “Mona Lisa”
    2. $ git config –global user.email “[email protected]
  3. Инициализация репозитория – git init внутри той директории, которая станет репозиторием (при этом создается директория .git)
  4. Файл .git/config – конфигурация репозитория
  5. Команда git status внутри папки .git – информация о репозитории
  6. Команда git add подготавливает измененный или добавленный файл к коммиту (пример: git add README.md)
  7. Команда git commit непосредственно фиксирует изменения в репозитории (флаг -m ‘init project’ – добавление короткого коментария к коммиту)
  8. Команда git log – просмотр истории коммитов (флаг -p  – выводит diff, где “+” – добавленные строки, “-” – удаленные строки; перемещение по логу “f” и “b“)
    1. Идентификатор коммита, например, 679e31d62ac734e3074f092e417ba741be767a0d.
    2. Информация об авторе. Имя и адрес электронной почты, которые вводились во время конфигурации git.
    3. Дата коммита.
    4. Описание коммита. Сообщение, которое вводилось при выполнении коммита.
  9. Команда git show 3a64fccf14725593b7486ff09d6a6c325a5f8fcc – изменения в коммите с указанным id (можно соратить до первых семи символов id: git show 3a64fcc)
  10. Команда git diff – изменения в рабочей копии (каталог, в котором находится каталог репозитория .git)
  11. туториал от Github

Состояния файлов в гите 

  1. Все файлы делятся на tracked и untracked
    1. Untracked – это новый файл, который не был добавлен для отслеживания командой git add.
    2. Tracked – все остальные файлы являются tracked
  2. Файл .gitignore  – список файлов-исключений для коммитов; гит будет игнорировать эти файлы (пример)
  3. Команда git rm – удаление данных из репозитория (примеры: git rm FILE1 FILE2git rm Documentation/\*.txt)
  4. Состояния tracked файлов:
    1. unmodified
    2. modified (git commit не отображает файлы modified файлы)
    3. staged (файлы после команды git add)
  5. Команда git add -i – интерактивное добавление изменений в staged (или, как говорят, “в индекс”)

  1. Удаление файлов из индекса
    1. reset: git reset path/to/file переводит файл из состояния staged в modified
    2. checkout: git checkout path/to/file переводит файл из состояния modified в unmodified, то есть по сути эта команда сбрасывает изменения.
  2. Команда git clean -i – удаление untracked файлов

 Ветки в гит 

  1. Команда git branch – показывает список веток
  2. Команда git branch new-feature – создание новой ветки
  3. Команда git checkout new-feature – переключение на новую ветку