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
Гит выполнил команду, смотрим в редакторе код файла и видим что не нужные изменения исчезли.
Смотрим статус и видим что на текущий момент наша рабочая папка проекта полностью соответствует тому что в репозитории.