1. Клонирование репозитория
    1. git-clone
      1. клонирует репозиторий в новую директорию
  2. Информационные команды
    1. git status
      1. Показывает состояние проекта/файлов
        1. кол-во untracked, deleted, new и прочих файлов, количество коммитов, на которое отличается локальная версия репозитория от удаленного и тд
          1. статус файла untracked
          2. Что система Git не отслеживает этот файл
          3. статус файла new
          4. Что файл только начал отслеживаться Git и пока не имеет истории
          5. статус файла modified
          6. Что файл имеет историю в системе Git и был изменен относительно его последнего состояния
      2. упрощенный вывод
        1. git status -s git status --short
          1. A - отслеживаемые M- отредактированые
    2. git log
      1. Просмотр коммитов, сделанных в репозитории в обратном к хронологическому порядке
    3. git diff
      1. Просмотр индексированных и неиндексированных изменени
        1. что изменили, но ещё не проиндексировали, что проиндексировали и собираетесь фиксировать
          1. git diff
          2. непроиндексированные изменения
          3. git diff --staged
          4. что проиндексировали и что войдёт в следующий коммит
          5. git diff --cached
          6. для просмотра проиндексированных изменений
  3. Коммит?
    1. Это единица состояния проекта в Git
    2. Как сделать коммит
      1. git add git commit
        1. git add filename
          1. Начинает отслеживать указанный файл или файлы
      2. git commit -m "my commit"
      3. git commit -a -m "my first commit"
    3. Работа с файлами
      1. Отслеживание новых файлов Индексация изменений
        1. git add filename
      2. Удаление файлов
        1. 1) удалить его из отслеживаемых файлов (удалить его из индекса) 2) выполнить коммит
          1. git rm
          2. + удаляет файл из рабочего каталога
      3. Переименование файлов
        1. git mv file_from file_to
  4. Работа с ветками
    1. Это разные пути развития проекта - разные последовательности коммитов
    2. Создать ветку
      1. $ git branch branchname
    3. Переключить ветку
      1. $ git checkout branchname
    4. Создать и Переключить ветку
      1. git checkout -b branchname
        1. аналогично
          1. $ git branch branchname
          2. $ git checkout branchname
    5. Слияние веток
      1. git merge targetbranch
    6. Удаление ветки
      1. git branch -d branchname
    7. А в какой мы ветке?
      1. $ git branch
  5. Удаленный репозиторий
    1. git push <ssh key>
    2. git push <remote-name> <branch-name>
      1. отправка изменений в удаленный репозиторий
    3. git remote show <remote>
      1. Просмотр удаленного репозитория
    4. git fetch
      1. Получение изменений из удалённого репозитория
        1. git remote add <shortname> <url>
          1. присвоили ему имя
        2. git fetch <shortname>
          1. получаем изменения
    5. git pull
      1. Получение изменений из удалённого репозитория
        1. извлекает (fetch) данные с сервера, с которого было клонирование, и автоматически пытается слить (merge) их с текущим кодом
    6. git push <remote-name> <branch-name>
      1. Отправка измененийв удаленный репозиторий
  6. Основная последовательность действий
    1. Получили задание
    2. Стянули последние изменения
      1. git pull
    3. Создали новую ветку
      1. git branch branchname
    4. Переключились на созданную ветку
      1. git checkout branchname
    5. Работаем=)
      1. создаем новый файлы, решающие поставленную задачу
    6. Смотрим, что у нас изменилось
      1. git status
    7. Начинаем отслеживать все файлы
      1. git add .
    8. Коммитим изменения
      1. git commit -m "my task"
    9. Заливаем изменения
      1. git push
  7. Источники
    1. https://git-scm.com/about
    2. https://git-scm.com/book/ru/v2