Клонирование репозитория, отображение, добавление файлов
Локальная подготовка Git
Перед началом работы пропишите базовые настройки Git. Запускайте bash на Windows или Терминал на MacOS: всю дальнейшую работу мы будем вести в командной строке.
В настройках укажите своё настоящее имя (вам это ещё на работе показывать) и действующий адрес электронной почты:
Скопировать кодBASHgit config --global user.name "Ваше Имя"
git config --global user.email "your_email@whatever.com"
Репозиторий
Репозито́рий
— место, где хранятся и поддерживаются данные проекта, чаще всего — в
виде файлов, доступных для дальнейшего распространения по сети.
Через Git вы будете сдавать домашнее задание на проверку. Для этого вы склонируете
репозиторий, который мы для вас создали и разместили в аккаунте
Практикума на GitHub. В прошлом уроке вы форкнули этот репозиторий в
свой аккаунт и можете работать с ним, как со своим.
«Клонировать
репозиторий» означает создать на компьютере его копию для дальнейшей
работы и синхронизации. При клонировании вы получаете не только рабочие
файлы, но и историю их изменения.
Для начала подготовьте директорию, где будете хранить рабочие проекты.
- В macOS создайте директорию
Dev
в домашней директории/Users/Имя_пользователя
. Для перехода в домашнюю директорию выполните в bash командуcd
илиcd ~
- В Windows создайте директорию
Dev
в корне любого диска. Перейдите в корень, выполнив командуcd /c
илиcd /d
, гдеc
илиd
— имя нужного диска. Если в пути к рабочей директории будет кириллица, например,C:\Пользователи\Семён Семёныч
, то в проектах может возникнуть ошибка. Лучше застраховаться и создать папкуDev
именно в корне диска.
Для создания директории в bash есть команда
mkdir имя_папки
(от англ. "make directory", «создать директорию»). Скопировать кодBASH# в macOS:
cd ~
mkdir Dev
# в Windows:
cd /c
mkdir Dev
Перейдите в эту папку:
cd Dev
Выполните команду:
Скопировать кодBASHgit clone https://github.com/ваш-аккаунт-на-гитхабе/backend_test_homework
Этой командой вы загрузили репозиторий с удалённого сервера к себе на компьютер, в только что созданную директорию.
Перейдите в свой репозиторий:
Скопировать кодBASHcd backend_test_homework
Работа с локальным репозиторием Git. Теория.
Версионный контроль в Git предполагает, что любой файл репозитория находится в одном из четырёх состояний:
- Неотслеживаемый (англ. untracked)
- Отслеживаемый, staged, добавленный в Staging Area (англ. «плацдарм», «временное хранилище»). Иначе в Git это называют «добавить в индекс»
- Изменённый (англ. modified),
- Боевой, на жаргоне разработчиков «закоммиченный» (англ. committed, «брошенный в бой»)
Логика
работы такая: как только в репозитории появляется новый файл, он
принимает состояние «неотслеживаемый». Что бы вы ни делали с этим
файлом, Git проигнорирует любые изменения.
Чтобы Git обратил внимание на файл и стал учитывать изменения, нужно добавить файл в индекс. Это делается командой
git add
. Файл перейдет в состояние «отслеживаемый», а если после этого внести в него изменения — в состояние «изменённый». После
завершения работы с файлом его нужно «сохранить» — сообщить программе
Git, что актуальное состояние файла надо запомнить. Такое сохранение
выполняется командой
git commit
и называется коммитом. Рабочие файлы будут коммититься много раз, и позже можно будет вернуться к любой сохранённой версии.Если вы изменяете уже существующий файл, то его состояние изменится на modified.
Задание. Исправьте ошибку в файле program.py, добавьте недостающую закрывающую скобку и сохраните файл.
Отображение изменений
Чтобы узнать состояние файлов в репозитории, есть команда git status (англ. status, «состояние»). Перейдите в папку с проектом и выполните команду
git status
. Вы увидите такое сообщение:Скопировать кодBASH# ввели команду для отображения состояния репозитория
git status
# и вот что Git сообщает в ответ
On branch master
No commits yet
Modified files:
(use "git add <file>..." to include in what will be committed)
program.py
nothing added to commit but untracked files present (use "git add" to track)
Git видит файлы, но они добавлены в Staging Area. Файлы в статусе modified (англ. «изменённый») выделены красным.
В скобках — замечание, что командой
git add
можно добавить файлы в индекс, чтобы сохранить изменения в коммите:Скопировать кодBASH(use "git add <file>..." to include in what will be committed)
Как и другие рекомендации
git status
, это совет по делу.Добавление файлов в индекс
git add (англ. add, «добавить») — команда для добавления файлов в Staging Area, в индекс. После команды укажите имя файла, судьбу которого Git должен отслеживать:
git add название_файла
.Можно добавить все неотслеживаемые файлы сразу, для этого есть опция --all (англ. all, «все»). Файлы из вложенных каталогов также добавятся в индекс:
git add --all
Опцию --all можно заменить точкой:
git add .
Скопировать кодBASH# добавили файл "program.py"
git add program.py
# добавили все файлы
git add --all
# добавили все файлы
git add .
Теперь, когда вы добавили файлы на stage, проверим, как изменился репозиторий:
Скопировать кодBASHgit status
On branch master
No commits yet
Changes to be committed: # файлы ожидают коммита
(use "git rm --cached <file>..." to unstage)
new file: program.py
Как видите, файл
program.py
добавлен в индекс и готов к коммиту. Файлы в текущей директории теперь имеют статус new file (англ. «новый файл»). И опять совет от
git status
: командой git rm --cached <file>
вы можете перевести файл в состояние «неотслеживаемый» (unstaged). Нет, сейчас мы этого делать не станем, но запомним, что это возможно.Какая команда добавляет файлы в временное хранилище?
Верно — add вместе с точкой означает «добавить все файлы».
Да, правильно! эту команду можно вызывать так, как больше нравится.