ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 376
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Установка Git
239
Установка Git
Возможно, Git уже установлена на вашем компьютере. Чтобы узнать это, введите команду git
--version в командной строке. Если вы увидите сообщение вида git version
2.29.0.windows.1
, значит, у вас уже установлена программная поддержка
Git. Если вы увидите сообщение «команда не найдена», Git придется установить.
В системе Windows перейдите на страницу https://git-scm.com/download, загрузите и запустите программу установки Git. В macOS Mavericks (10.9) и более поздних версиях просто выполните команду git
--version из окна терминала; вам будет предложено установить Git, как показано на рис. 12.2.
В Ubuntu или Debian Linux выполните команду sudo apt install git-all из окна терминала. В Red Hat Linux выполните команду sudo dnf install git-all из окна терминала. Инструкции для других дистрибутивов Linux находятся на https://git-
scm.com/download/linux. Чтобы убедиться в том, что установка прошла успешно, выполните команду git
--version
Рис. 12.2. При первом выполнении команды git --version в macOS 10.9 и выше вам будет предложено установить Git
Настройка имени пользователя и адреса электронной почты
После установки Git необходимо задать ваше имя и адрес электронной почты, чтобы в ваши коммиты включалась информация об авторе. В терминале выполните следу- ющие команды git config
, используя собственное имя и адрес электронной почты:
C:\Users\Al>git config --global user.name "Al Sweigart"
C:\Users\Al>git config --global user.email al@inventwithpython.com
Эта информация хранится в файле
.gitconfig в вашей домашней папке (например, в
C:\Users\Al на моем ноутбуке с Windows). Вам никогда не придется редактировать этот текстовый файл напрямую. Для его изменения достаточно выполнить команду git config
. Для настройки текущей конфигурации Git используйте команду git config
--list
240
Глава 12.Git и организация программных проектов
Установка графических средств Git
В этой главе основное внимание мы уделим средствам командной строки Git, но установка программы, добавляющей графический интерфейс (GUI) для Git, по- может вам выполнять повседневные задачи. Даже профессиональные разработчики, хорошо знающие командную строку Git, часто используют графические средства
Git. На веб-странице https://git-scm.com/downloads/guis приведены ссылки на не- которые программы, включая TortoiseGit для Windows, GitHub Desktop для macOS и GitExtensions для Linux.
На рис. 12.3 показано, как TortoiseGit для Windows добавляет к значкам в
Проводнике цветные метки в зависимости от их статуса: зеленые для неизмененных файлов в ре- позитории и красные для измененных файлов (или папок, содержащих измененные файлы); метка отсутствует у файлов, которые не отслеживаются. Конечно, ориен- тироваться по меткам гораздо проще, чем постоянно вводить команды в терминале для получения нужной информации. TortoiseGit также добавляет контекстное меню для выполнения команд Git (рис. 12.3).
Рис. 12.3. TortoiseGit для Windows добавляет графический интерфейс для выполнения команд Git из
Проводника
Графические средства Git удобны, но они не заменят применения команд, описан- ных в этой главе. Возможно, вам когда-нибудь придется работать с Git на компью- тере, на котором графические средства не установлены.
Работа с Git
241
Работа с Git
Работа с репозиторием Git состоит из нескольких этапов. Сначала вы создаете репозиторий Git командой git init или git clone
. Затем файлы добавляются в репозиторий для отслеживания командой git add
<имя_файла>. Наконец, после добавления файлов они сохраняются командой git commit
-am
"
<сообщение, опи-
сывающее содержание коммита>
"
(часто называют просто «сообщение коммита»).
Теперь все готово для внесения изменений в код.
Вы можете просмотреть справку по каждой из этих команд командой git help
<команда> — например, git help init или git help add
. Справочные страницы удобны, но они предлагают слишком сухую и техническую информацию, чтобы ее можно было легко и просто использовать для обучения. Позднее я расскажу более подробно о каждой из этих команд, но сначала необходимо представить некоторые концепции Git — это поможет вам понять материал главы.
Как Git отслеживает статус файлов
Все файлы в рабочем каталоге либо отслеживаются, либо не отслеживаются Git.
Отслеживаемые файлы были добавлены и сохранены в репозитории, все остальные файлы не отслеживаются. Для репозитория Git неотслеживаемые файлы в рабо- чей копии не существуют. С другой стороны, отслеживаемые файлы существуют в одном из трех состояний.
В сохраненном (закрепленном) состоянии файл в рабочей копии идентичен последнему коммиту в репозитории. (Иногда это состояние называется не-
измененным, или чистым.)
В измененном состоянии файл в рабочей копии отличается от последнего коммита в репозитории.
В индексированном, или подготовленном (staged),состоянии файл был из- менен и помечен для включения в следующий коммит. Также говорят, что файл находится в индексной области (или кэше).
На рис. 12.4 изображена диаграмма перехода файла между четырьмя возможными состояниями. Вы добавляете неотслеживаемый файл в репозиторий Git, после чего он становится отслеживаемым и индексированным. Далее можно сохранить индексированные файлы, чтобы перевести их в индексированное состояние. Для перевода файла в измененное состояние никакие команды Git не нужны; как толь- ко вы внесете изменения в сохраненный файл, он автоматически помечается как измененный.
242
Глава 12.Git и организация программных проектов
Отслеживаемый файл
Сохраненный файл
Измененный файл
Индексированный файл
Неотслеживаемый файл
Рис. 12.4. Возможные состояния файла в репозитории Git и переходы между ними
На любом этапе после создания репозитория выполните команду git status для просмотра текущего статуса репозитория и состояния его файлов. Эта команда часто выполняется при работе в Git. Для следующего примера я подготовил файлы в разных состояниях. Обратите внимание на то, как эти четыре файла представлены в выходных данных git status
:
C:\Users\Al\ExampleRepo>git status
On branch master
Changes to be committed:
(use "git restore --staged
new file: new_file.py
❶
modified: staged_file.py
❷
Changes not staged for commit:
(use "git add
(use "git restore
modified: modified_file.py
❸
Untracked files:
(use "git add
untracked_file.py
❹
В этой рабочей копии присутствует файл new_file.py
❶
, который недавно был до- бавлен в репозиторий, а следовательно, находится в индексированном состоянии.
Также присутствуют два отслеживаемых файла staged_file.py
❷
и modified_file.py
❸
, которые находятся в индексированном и измененном состоянии соответствен- но. Также присутствует неотслеживаемый файл untracked_file.py
❹
. В выходные
Создание репозитория Git на вашем компьютере
243
данные git status также включены команды Git, переводящие файлы в другие состояния.
Для чего нужно индексирование?
Возникает вопрос — для чего нужно индексированное состояние? Почему нельзя просто переходить между измененным и сохраненным состоянием без индекси- рования файлов? Область индексирования полна неприятных особых случаев, и часто у новичков в Git вызывает недоумение. Например, файл может быть из- менен после того, как он был проиндексирован, в результате чего файл существует как в измененном, так и в индексированном состоянии (см. предыдущий раздел).
С технической точки зрения область индексирования содержит не столько файлы, сколько описания изменений, потому что одни части измененного файла могут быть индексированы, а другие — нет. Именно из-за таких случаев Git считается сложной системой, а многие источники о работе Git часто содержат неточную информацию в лучшем случае или дезинформацию — в худшем.
Однако большую часть этих сложностей можно обойти. В этой главе я рекомендую так и поступить, используя команду git commit
-am command для индексирования и закрепления измененных файлов на одном шаге. В этом случае файлы переходят из измененного состояния сразу же в чистое. Кроме того, я рекомендую всегда не- медленно сохранять файлы после их добавления, переименования или удаления из репозитория. Кроме того, использование графических средств Git (о которых я расскажу позднее) вместо командной строки поможет избежать этих нетриви- альных случаев.
Создание репозитория Git на вашем компьютере
Git является распределенной системой контроля версий; это означает, что все коммиты и метаданные репозиториев хранятся локально на вашем компьютере в папке с именем
.git
. В отличие от централизованных систем контроля версий
Git не нужно подключаться к серверу по интернету для сохранения данных.
Благодаря такому подходу система Git работает быстро и остается доступной при автономной работе.
Введите в окне терминала следующие команды для создания папки
.git
(в macOS и Linux необходимо выполнить команду mkdir вместо md
):
C:\Users\Al>
1 ... 21 22 23 24 25 26 27 28 ... 40
md wizcoin
C:\Users\Al>cd wizcoin
C:\Users\Al\wizcoin>git init
Initialized empty Git repository in C:/Users/Al/wizcoin/.git/
244
Глава 12.Git и организация программных проектов
Когда вы превращаете папку в репозиторий Git командой git init
, все файлы в ней в исходном состоянии являются неотслеживаемыми. Для папки wizcoin команда git init создает папку wizcoin/.git с метаданными репозитория Git. На- личие папки
.git превращает папку в репозиторий Git; без нее остается просто набор файлов с исходным кодом в обычной папке. Файлы никогда не следует изменять непосредственно в папке
.git
, поэтому на нее можно не обращать внимания. Собственно, имя
.git присваивается ей из-за того, что многие опе- рационные системы автоматически скрывают папки и файлы, имена которых начинаются с точки.
Теперь в вашем рабочем каталоге
C:\Users\Al\wizcoin создан репозиторий. Репо- зиторий на вашем компьютере называется локальным; репозиторий на другом компьютере называется удаленным. Эти различия важны, потому что сохранен- ные данные часто приходится размещать как в локальных, так и в удаленных репозиториях, чтобы вы могли работать с другими разработчиками над одним проектом.
ВЫПОЛНЕНИЕ КОМАНДЫ GIT STATUS КОМАНДОЙ WATCH
При использовании средств командной строки git часто приходится выпол- нить команду git status для получения информации о статусе репозитория.
Вместо того чтобы вводить эту команду вручную, можно воспользоваться командой watch
. Команда watch выполняет заданную команду через каждые две секунды и обновляет экран новыми результатами.
Для Windows команду watch можно загрузить со страницы https://invent-
withpython.com/watch.exe и поместить ее в папку из PATH (например, C:\
Windows). Пользователи macOS могут зайти на сайт https://www.macports.
org/, загрузить и установить MacPorts, а затем выполнить команду sudo ports install watch
. В системе Linux команда watch уже установлена.
Когда установка будет завершена, откройте новое окно командной строки или терминала, перейдите в папку проекта репозитория Git командой cd и выполните команду watch
"git status"
. Команда watch выполняет git status каждые две секунды и выводит полученные результаты на экран.
Окно можно оставить открытым, пока вы используете командную строку
Git в другом окне терминала, чтобы наблюдать за изменениями статуса репозитория в реальном времени. Вы можете открыть другое окно тер- минала и выполнить команду watch
"git log
-online"
, чтобы просмотреть сводку вносимых изменений (также обновляемую в реальном времени).
С этой информацией вам не придется гадать, что вводимые вами команды
Git делают с репозиторием.
Создание репозитория Git на вашем компьютере
245
После того как репозиторий будет создан, команда git может использоваться для добавления файлов и отслеживания изменений в рабочем каталоге. Вы- полнив коман ду git status в созданном репозитории, вы получите следующую информацию:
C:\Users\Al\wizcoin>git status
On branch master
No commits yet nothing to commit (create/copy files and use "git add" to track)
Из выходных данных команды видно, что в репозитории еще ничего не сохранено.
Добавление файлов для отслеживания
Только отслеживаемые файлы можно сохранять, откатывать к предыдущей версии или выполнять иные операции командой git
. Выполните команду git status
, чтобы просмотреть статус файлов в папке проекта:
C:\Users\Al\wizcoin>git status
On branch master
No commits yet
Untracked files:
❶
(use "git add
.coveragerc
.gitignore
LICENSE.txt
README.md
--snip-- tox.ini nothing added to commit but untracked files present (use "git add" to track)
Ни один файл в папке wizcoin в настоящее время не отслеживается
❶
. Чтобы отслеживать их, следует выполнить исходное сохранение этих файлов. Процесс сохранения состоит из двух этапов: выполнения команды git add для каждого со- храняемого файла и последующего выполнения команды git commit для создания коммитов всех этих файлов. После того как файл будет сохранен, Git начинает его отслеживать.
Команда git add переводит файлы из неотслеживаемого или измененного со- стояния в индексированное состояние. Можно выполнить команду git add для каждого файла, который нужно проиндексировать (например, git add
.coveragerc
,
246
Глава 12.Git и организация программных проектов git add
.gitignore
, git add
LICENSE.txt и т. д.), но это утомительно. Лучше вос- пользоваться подстановочным символом
*
для добавления сразу нескольких файлов. Например, команда git add
*.py добавляет все файлы
.py из текущего рабочего каталога и его подкаталогов. Чтобы добавить все неотслеживаемые файлы, используйте точку (
):
C:\Users\Al\wizcoin>git add .
Выполните команду git status
, чтобы просмотреть список проиндексированных файлов:
C:\Users\Al\wizcoin>git status
On branch master
No commits yet
Changes to be committed:
❶
(use "git rm --cached
new file: .coveragerc
❷
new file: .gitignore
--snip-- new file: tox.ini
Вывод команды git status сообщает, какие файлы были проиндексированы для коммита при следующем выполнении команды git commit
❶
. Также из него можно узнать, что это новые файлы, добавленные в репозиторий
❷
, а не существующие файлы в репозитории, которые были изменены.
После выполнения команды git add для выбора файлов, добавляемых в репозито- рий, выполните команду git commit
-m
"Adding new files to the repo."
(или с другим похожим сообщением). Потом снова выполните команду git status
, чтобы про- смотреть отчет о статусе репозитория:
C:\Users\Al\wizcoin>git commit -m "Adding new files to the repo."
[master (root-commit) 65f3b4d] Adding new files to the repo.
15 files changed, 597 insertions(+)
create mode 100644 .coveragerc create mode 100644 .gitignore
--snip-- create mode 100644 tox.ini
C:\Users\Al\wizcoin>git status
On branch master nothing to commit, working tree clean
Обратите внимание: файлы, перечисленные в файле
.gitignore
, не включаются в ин- дексирование. Об этом я расскажу в следующем разделе.