git clone

Клонирование репозитория выполняется командой git clone <адрес репозитория>.

Итак, идем git.hospserver.com, находим нужный репозиторий.
Выбираем протокол общения с сервером SSH и жмем кнопку Copy
Screenshot

Далее открываем консоль в директории со всеми проектами - родительскую директорию для нового проекта. В примере это директория workspace.
Пишем команду git clone и вставляем адрес проекта.
Screenshot

Git попробует постучатся на сервер и если сервер ему не знаком то он спросит доверять ли этому источнику или нет, пишем - yes.
Screenshot

После будет клонирован весь репозиторий
Screenshot

Проверим наличие проекта командой ll. (2 маленькие L)
Screenshot

git status

Итак, для того чтобы проверить текущее состояние репозитория нужно выполнить команду git status. Если в репозитории нет изменений мы увидим вот это:
Screenshot

Первая строка

On branch master

Говорит нам о том в какой ветке мы проверяем статус, в нашем случае это master. Но не обязательно это будет всегда мастер.

Вторая строка

Your branch is up-to-date with ‘origin/master’

Говорится то что наша локальная ветка абсолютно идентична удаленной ветке на сервере.
Подсказкой является еще слово origin (оригинал).

Предположим мы добавили новый файл. Команда git status покажет нам следующее:
Screenshot

Измененные файлы выделены красным и находится в категории Untracked files
Также git подскажет что следует сделать с этими файлами.

(use “git add <file>...” to include in what will be committed)

Смысловой перевод: используйте команду git add ... чтобы включить файлы в то что будет записано.

Последняя строка

nothing added to commit but untracked files present (use “git add” to track)

Смысловой перевод: ничего не добавлено в коммит но присутствуют измененные файлы (используйте git add)

Выполним команду git add .
Screenshot

В консоли точка обозначает текущую директорию. Другими словами команда добавит текущую директорию в состояние отслеживания перед коммитом. В английском языке это состояние называют Staging Area. Ещё называют stage (Стейдж). По факту стейдж это корзина с продуктами за которые мы еще не заплатили на кассе. А коммит это как чек с перечнем купленных продуктов. После этого теперь будет понятно смысл английского use “git add” to track . To track - переводится как следить, другими словами файлы которые были изменены не будут добавлены в коммит, пока мы их не “положим в корзину”. Вернемся к результату. Теперь видно что git взял наши файлы для коммита

Changes to be committed:

Смысловой перевод: Изменения которые будут за комичены

Очередная подсказка от git’а.

(use “git reset HEAD <file>...” to unstage)

Смысловой перевод: Используйте “git reset HEAD ...” чтоб убрать файл из стейджа

Git нам подсказывает что если мы по неосторожности добавили файл который не хотим коммитить, можем воспользоваться командой reset. Но о ней мы поговорим позже.

Новые файлы буду подписаны как new files.

Если же в директории репозитория был переименован файл, то результатом команды status мы увидим следующее:
Screenshot

Git пока еще не знает что мы переименовали файл, он только видит что тот файл за которым он следил test.txt был удален и появился файл за которым он не следил other_test.txt.

Однако если мы выполним команду git add ., после чего выполним команду status. Git покажет что файл был переименован:
Screenshot

Если же файл был изменен то при выполнении команды status результат будет:
Screenshot

После добавления в stage:
Screenshot

Если же файл был удален то при выполнении команды status результат будет:
Screenshot

После добавления в stage:
Screenshot

git add

Официальная документация >>> git add

git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i]
        [--patch | -p] [--edit | -e] [--[no-]all | --[no-]ignore-removal |
        [--update | -u]] [--intent-to-add | -N] [--refresh] [--ignore-errors]
        [--ignore-missing] [--chmod=(+|-)x] [--] [<pathspec>…​]

Конструкцию можно упростить если убрать необязательные(optional) поля.

git add [<pathspec>...]

<pathspec> - это может быть как директория с файлами так и только файл. Однако это не может быть пустая директория. Git ничего там не найдет.

В более точном описании: команда git add индексирует файлы - создает копию файла, которая будет отправлена в центральный репозиторий.

Если мы выполним команду git status то:

Примеры использования:

git add .

Команда добавит все, новые или измененные или удаленные, файлы и директории в stage

git add images/

Команда добавит все файлы и директории по указанному пути в stage

git add images/klimat.jpg

Команда добавит один файл в stage

git add images/*.jpg

Git работаeт с регулярными выражениями -> RegExp - Regular expressions
Данная команда добавит все файлы *.jpg в директории images отсносительно текущего пути в stage

git commit

Официальная документация >>> git commit

git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]
       [--dry-run] [(-c | -C | --fixup | --squash) <commit>]
       [-F <file> | -m <msg>] [--reset-author] [--allow-empty]
       [--allow-empty-message] [--no-verify] [-e] [--author=<author>]
       [--date=<date>] [--cleanup=<mode>] [--[no-]status]
       [-i | -o] [-S[<keyid>]] [--] [<file>…​]

В общей сложности эта команда превратит наш stage в сущность которая называется коммитом(commit). Для человека коммит это набор изменений, в пространстве git'а это набор новых файлов которыми они заменит старые.

После того как мы добавили измененные файлы в stage следует отправить наш стейдж в стадию коммита.

Примеры использования:

git commit

После выполнения этой комманды git попросит вас ввести название коммиту для этого он откроет консольный редактор файлов. В этом файле нужно будет ввести сообщение. После сохранения файла git самостоятельно удалит его предварительно взяв то сообщение которые там написано. Этот способ менее популярен так как требует много действий, но эффективен когда нужно написать большое сообщение

git commit -m "Some message for commit"

Самый популярный способ создать коммит среди разработчиков. В данном примере мы сразу указывает имя коммиту и в дальнейшем никакого консольного редактора открыто не будет.

git commit -am "Some message for commit"

Второй по популярности способ создать коммит. Если у нас нет новых файлов или нам не нужно удалять старые файлы и мы точно уверены что нам нужно за коммитить все измененные файлы то можно воспользоватся этой командой. В данном случае параметр -a выполнит команду git add . автоматически за нас и после этого выполнится команда git commit -m "Some message for commit".

git push

Официальная документация >>> git push

git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
       [--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
       [-u | --set-upstream] [--push-option=<string>]
       [--[no-]signed|--sign=(true|false|if-asked)]
       [--force-with-lease[=<refname>[:<expect>]]]
       [--no-verify] [<repository> [<refspec>…​]]

git push отправит все наши коммиты в центральный репозиторий.

Примеры использования:

git push

Если мы работаем с веткой master и мы хотим туда-же залить все наши коммиты то такой формулировки git push достаточно.
Иногда бывают случаи что при выполнений такой короткой формы пуша git всеровно не знает куда ему отправлять изменения, в таком случае нужно выполнить следующую команду.

git push origin master

В не редких случаях git спросить куда отправить изменения. В такой формулировке команда явно указывает ветку master и репозиторий origin.

git pull

git diff

git checkout