РЕПОЗИТОРИЙ

  $ git push # Отправить изменения 
  $ git pull # Получить изменения
  # Команда инициализации репозитория
  $ git init
  # команда инициализации центрального репозитория
  $ git init --bare
  
  # Проверка работоспособности репозитория
  $ git status
  
  # клонируем репозиторий
  $ git clone [путь: центральный репозиторий] [путь: клон]  
  пример: '$ git clone ~/example_bare clone_of_example'
  
  # Смотрим связь клона с репозиторием:
  $ git remote -v
  'origin  /home/user/example_bare (fetch)'
  'origin  /home/user/example_bare (push)'
  # То же самое через чтение конфига
  $ cat .git/config
  '		[remote "origin"]'
  '		    url = /home/user/example_bare'
  '		    fetch = +refs/heads/*:refs/remotes/origin/*'
  
  -----------------------
  

КОММИТ

  # Создаём файл
  $ touch README.md
  # Меняем содержимое
  $ echo '# Hi' > README.md
  # Так Git увидит новый файл
  $ git add README.md
  # Коммит с сообщением 'init project'
  $ git commit -m 'init projecT'
  ----------------------
  # Посмотреть историю коммитов
  $ git log
  

$ git log -- basicsDesign.html # посмотореть историю коммитов конкретного файла

$ git log -p -- basicsDesign.html # посмотореть историю коммитов конкретного файла c изменениями (diff)

checkout 3f25701874aa5a2c16cc6275fa30baa5b6e477a6 basicsDesign.html # переключится на коммит конкретного файла

# Зная идентификатор коммита можно посмотреть изменения в коде.
$ git show 3a64fccf14725593b7486ff09d6a6c325a5f8fcc команда 'git diff', запущенная без аргументов, показывает различия между репозиторием и вашей рабочей копией

' .gitignore' - этот файл поможет Git определить то, что точно не придётся коммитить.

  $ git reset path/to/file     # сброс git add
  $ git checkout path/to/file  # сброс git commit. т.е. откат свежих изменений.
  

$ git checkout [идентификатор] # После этой команды, в рабочей копии окажется то состояние репозитория, которое было на момент коммита идентификатор.
$ git checkout master # возврат в свежий коммит

ВЕТВЛЕНИЕ

  $ git branch # смотрим название текущей ветки
  $ git branch new-feature # создание новой ветки. new-feature - это название новой ветки
  $ git checkout new-feature # переключение на новую ветку
  $ git checkout ed8145e # переключились на необходимый коммит
  $ git status #     проверили текущее  состояние
  HEAD detached at ed8145e # HEAD -это голова от которой растёт новая ветка
  ----------------------------
  

ИЗМЕНЕНИЯ

$ git push origin master # Отправка. orign - имя удалённого репозитория, maser -ветка

Отслеживаемая ветка устанавливается командой 'git push --set-upstream origin master.'

Эта команда выполняет два действия:

  1. устанавливает отслеживание
  2. отправляет изменения.
Она выполняется ровно один раз, далее можно отправлять изменения набирая просто 'git push'.

Информация об отслеживаемой ветки описывается в файле '.git/config' в виде секций '[branch "имя ветки"]:'
$ git pull # получить изменения
-----------------------------

Моя первая отправка на GitHub

  rekoshed@rekoshed-RV408-RV508:~/Github/repositori/Hello-World$ git push --set-upstream origin master
  
  Username for 'https://github.com': rekoshed@yandex.ru
  Password for 'https://rekoshed@yandex.ru@github.com': 
  Подсчет объектов: 3, готово.
  Delta compression using up to 2 threads.
  Сжатие объектов: 100% (3/3), готово.
  Запись объектов: 100% (3/3), 1.80 KiB | 1.80 MiB/s, готово.
  Total 3 (delta 0), reused 0 (delta 0)
  To https://github.com/Rekoshed/Hello-World.git
  5aa8707..a09e66d  master -> master
  Ветка «master» отслеживает внешнюю ветку «master» из «orig
  ---------------------------------------------------------