Предыдущий ролик Следующий ролик  

Видео урок: Добавление файлов

Git: обучение основам

В этом ролике мы поговорим о том, как добавлять файлы в Git репозиторий. Один раз мы это делали, когда создавали наш первый коммит, но сейчас мы лучше понимаем Git архитектуру и как все работает. Так что давайте обратимся к этому еще раз и изучим все подробнее. Помните, у нас здесь наш первый Git проект, и есть first_file.txt, И я его уже коммитил, когда делал первый коммит. В командной строке я нахожусь в той же самой директории проекта, и первая Git команда, которой я хочу вас научить, является git status. git status говорит нам, какие различия есть между нашей рабочей директорией, буфером и репозиторием. Она говорит нам, каков статус трех этих разных деревьев. Сейчас она говорит, что мы находимся в бранче master. Мы знаем, что бранч по умолчанию называется master. Мы все время будем работать в master бранче, пока не начнем создавать новые, так что пока что вы можете это игнорировать, что вы находитесь в master бранче.

И команда говорит нам, что коммитить нечего, что наша рабочая директория чиста. И теперь мы знаем, что в буфере и рабочей директории нет ничего, что можно отправить в репозиторий, а в текущем бранче, на который указывает HEAD, находится все то же самое, что есть у нас в рабочей директории. А теперь давайте добавим несколько файлов. И чтобы добавить несколько файлов в проект, я просто открою текстовый редактор, я создаю новый файл, это второй файл, и сохраняю его как second_file.txt на десктоп, ну, продолжим и создадим еще один файл, это третий файл, и давайте сохраним его как third_file.txt.

Вот у нас есть два файла, и я просто перетягиваю их в мой проект. Итак, я добавил два новых файла в проект, давайте снова напишем git status и посмотрим, что нам скажет Git по этому поводу. И Git показывает нам раздел, который называется неотслеживаемые файлы (Untracked files). По существу, Git говорит - я знаю, что находится в репозитории и я вижу вашу рабочую директорию. В рабочей директории есть пару новых вещей, и на данный момент они не отслеживаются. И если вы их отредактируете, я не смогу сказать, что изменилось, потому что я их на данный момент не отслеживаю.

Затем Git говорит нам, что если мы хотим их добавить, мы можем использовать git add и имя файла, чтобы включить то, что будет закоммичено. И если мы хотим включить один файл, мы пишем git add и имя нужного файла. Если мы хотим включить несколько файлов, мы можем написать git add и имена файлов один за другим, или, как мы видели ранее, мы можем просто набрать git add с точкой, чтобы добавить все, что находится в директории. На данный момент мы этого делать не будем, сейчас мы все же будем перечислять. Если я начну писать имя файла, а затем нажму Tab, произойдет автозаполнение, git add second_file.txt, и Git добавит его в буфер.

Помните, как мы это делали? Мы перемещали его из рабочей директории в буферную зону, используя git add. Теперь, если я напишу git status, мы можем увидеть между ними разницу. Мне показано два разных раздела, он говорит, что изменения могут быть закоммичены, это моя буферная зона, и то, что было добавлено в буферную зону, можно закоммитить. Также он говорит нам, какая команда должна быть использована, чтобы вывести изменения из буферной зоны, забрать их из буфера. И внизу мы видим наши неотслеживаемые файлы, они до сих пор еще не добавлены, они находятся только в рабочей директории.

Один файл находится в буфере, а один файл все еще в рабочей директории. А теперь давайте сделаем коммит. Помните, что команда для коммита - это git commit, а затем мы добавляем сообщение, пишем -m, затем в кавычках само сообщение - Add second file to project. Таким образом, это сообщение нашего нового коммита. И что же здесь закоммичено? Здесь закоммичено то, что находится в буфере, и именно из буфера коммитятся изменения.

Мой коммит сделан, тут есть сообщение коммита и первая часть SHA, так что я могу все это видеть. А затем он дает мне некоторую информацию о том, что было сделано, о том, что было изменено. Углубляться в это нам не нужно. Давайте напишем git status, и посмотрим, что он нам скажет, пишем git status, и вот мы видим разницу. Мы не видим никаких отчетов по второму файлу, потому что второй файл был добавлен в наш репозиторий, он ничего нам не говорит про него, потому что в нашей рабочей директории тот же самый файл, а он нам дает отчет о том, какие есть различия.

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

Теперь можно снова написать git status, и если мы заходим добавить третий файл в наш репозиторий, мы напишем git add third_file.txt. И вот теперь он в буферной зоне, изменения мы коммитим при помощи git commit, и с другим сообщением добавляем файл в проект. Конечно же, вы будете создавать что-то более описательное в будущем, чем то, что мы делаем с этими файлами, а сейчас мы видим, что этот третий файл закоммичен, пишем git status, и теперь Git нам скажет, что коммитить нечего, наша рабочая директория чиста, git log показывает нам все три коммита, и все эти три файла находятся в нашем проекте.

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