#5 Git - Коммиты, индексы, добавления

Git. Система контроля версий

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

Давайте внесем изменения в один из отслеживаемых и закоммиченных файлов.
Например в файл htdocs\index.php
Просто добавил какой-либо код.

Если мы посмотрим статус репозитория:

git status

То гит нам покажет эти два файла.
Первое что мы сделаем, это добавим неотслеживаемый файл в индекс

git add LICENSE.php

Смотрим статус и видим что теперь у нас есть один новый файл (файл LICENSE.php и добавился и проиндексировался) и один модифицированный.
Модифицированный при этом еще не в индексе (т.е. если сделаем commit, то он не попадет в репозиторий).

Делаем коммит:

git commit -m"add files"

Смотрим статус:

git status

Так и есть - команда статус показала что измененный файл index.php в коммит не попал.
В коммит попадает то что проиндексировано.

Мы можем работать над группой файлов, но пока мы гиту не покажем (не добавим в индекс) какие файлы хотим запечатлеть коммитом, гит выполняя коммит их не добавит.

Проиндексирум измененный файл. Так же как и добавление файлов за индексацию у нас отвечает команда add.
Можно выполнить индексацию/добавление по маске:

git add "*.php"

Как вы понимаете после этой команды в индекс попадат все файлы с расширением php.
Смотрим статус и видим что у нас теперь есть два проиндексированных файла.
То есть проиндексированы ТЕКУЩИЕ СОСТОЯНИЯ этих файлов. И именно эти состояния попадут в коммит.

Усложним задачу и внесем еще изменения в файл LICENSE.php (коммит мы еще не делали).
Смотрим статус и видим что файл LICENSE.php на текущий момент является и проиндексированным (то есть его прежнее состояние попадет в коммит) и в то же время LICENSE.php является и НЕпроиндексированным, то есть его текущее состояние отличается от того состояния на момент которого мы его индексировали.

Если мы сейчас выполним коммит, то в коммит уйдет только то что проиндексировано. И те новые изменения что мы внесли в файл после индексации - в коммит не попадут.

Коммитим:

git commit -m"commit"

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

Чтобы эти "остаточные" изменения добавить в репозиторий нам потребуется проиндексировать файл командой add.
Но допустим что эти изменения нам уже не нужны. Допустим что изменений было много и руками все удалить мы не сможем (есть вероятность ошибки). Как сделать так чтобы откатить состояние файла до того состояния которое у нас является конечным в репозитории? Но откатиться мы хотим не полностью (тоесть не на текущее состояния репозитория),
а откатить нам требуется именно файл LICENSE.php.

Для решения подобной задачи у нас есть следующая команда checkout:

git checkout -- LICENSE.php

 

Гит выполнил команду, смотрим в редакторе код файла и видим что не нужные изменения исчезли.
Смотрим статус и видим что на текущий момент наша рабочая папка проекта полностью соответствует тому что в репозитории.

Добавить отзыв (пожелание, комментарий)