"Repository — a place where things are or may be reposited,
or laid up, for safety or preservation."
Daniel Webster 1913 dictionary
or laid up, for safety or preservation."
Daniel Webster 1913 dictionary
Git.1: введение, клонирование
Предупреждение: эта заметка будет объёмнее, чем последующие, так как здесь будут даны общие данные и расписаны некоторые понятия. Наберитесь терпения.
Серия статей «Git: базовые функции или как не потерять лицо перед коллегами» является памяткой для тех, кто периодически забывает о том, как работать с Git'ом в редко возникающих ситуациях или никогда не работал и нуждается в коротких подсказках как работать с этой системой в объёме ежедневных/еженедельных операций с репозиториями. Так же эти заметки могут служить инструкцией для быстрого начала работы с Git'ом для новичков и студентов.
Сам я ощутил потребность в подобном источнике информации, когда я устроился на новую работу, в достаточно большой коллектив, где Git действительно использовался для командной работы, а не как система архивирования, что не редко встречается. Меня хотели быстро подключить к проекту, сказали забрать репозиторий и прислали ссылку на него. А я не только не помнил, что с этим делать - я даже не мог вспомнить, когда выкачивал репозиторий в последний раз! В памяти всплывали только команды commit и push (это мы делаем несколько чаще, чем выкачиваем репозитории). Я с ужасом осознал, что это — всё, что я знаю о Git'е на данный момент. Тут я подумал, что хорошо бы было иметь памятки, неглубокие, но содержащие нужный минимум, и в которые можно было бы заглядывать по мере необходимости. Это и побудило меня записать и опубликовать информацию для коллег.
Кому ещё могут быть полезны эти заметки?
- Руководителю, которому нужно иногда смотреть, что происходит с кодовой базой в отделе или проекте.
- Тем, у кого имел место отпуск или другой перерыв в работе.
- Тем, кому надо подготовиться к зачёту или к защите своего первого диплома в техническом ВУЗе.
Знакома какая-то из вышеописанных ситуаций? Тогда читайте — это для вас.
Перед тем как начать, укажу общие сведения:
- Для примеров я буду использовать сервис GitLab. Почему я выбрал его? Потому что этот продукт включает в себя Git-сервер и достаточно серьёзную надстройку над ним в виде bug-, issue-трекинга и иных инструментов. Если мы в этих заметках будем касаться какого-то функционала этого сервиса (помимо самого Git'а) — знакомство с ним будет плюсом вашей (и моей) карьере, так как GitLab нередко используется как внутрикорпоративная система во многих компаниях (даже в IBM, Sony и NASA!).
- Для доступа к моим учебным репозиториям не будет запрошен пользователь и пароль - все они настроены как «публичные».
- Структура этих заметок будет примерно следующая: описание рассматриваемой проблемы или постановка задачи, её решение в простых терминах, затем, опционально: заметки о дополнительных нюансах, потенциальных ошибках, возможностях и более подробная техническая информация.
- Прошу вас сообщать мне о допущенных ошибках или упущениях (терминология, аспекты, и пр.). Не стесняйтесь задавать дополнительные вопросы. Так же буду благодарен за предложения тем, которые вы считаете уместным рассмотреть.
Начнём с самого первого нашего контакта с системой Git — как скачать репозиторий?
git clone https://gitlab.com/daftsoft/StartProject.git
NB!
NB!
git clone https://gitlab.com/daftsoft/StartProject.git LocalProjectDirectory
git clone https://gitlab.com/daftsoft/StartProject.git --recurse-submodules
git submodule init
git submodule update --remote Submodule (Submodule — имя субмодуля)
Эта команда создаст каталог с названием проекта без расширения (.git), в нашем случае — StartProject, и скачает последнюю версию репозитория в этот каталог.
NB!
В терминологии (и в идеологии) Git'а скачивание репозитория называется «клонированием». Впрочем, не во всех коллективах используют этот термин, нередко говорят «скачать».
NB!
Если вас не устраивает имя проекта по-умолчанию (имя проекта Git'а без .git), вы можете склонировать репозиторий в каталог с указанным именем:
Если в проекте есть субмодули (уточните это у старших в отделе или у начальника/руководителя), нужно использовать ключ --recurse-submodule
git clone https://gitlab.com/daftsoft/StartProject.git --recurse-submodules
Если нужно забрать один субмодуль, например, если в проекте их очень (слишком) много, то из каталога, где лежит репозиторий выполнить:
git submodule init
git submodule update --remote Submodule (Submodule — имя субмодуля)
Подробнее о том, что такое субмодуль мы поговорим в следующих выпусках.
Всё. Вы можете начинать работать с кодом — изучать, компилировать, отлаживать.
Git может работать по двум протоколам — https и ssh.
Примеры ссылок (адресов репозиториев):
HTTPS:
https://gitlab.com/daftsoft/StartProject.git
SSH:
git@gitlab.com:daftsoft/startproject.git
NB!
git@gitlab.com:daftsoft/startproject.git
NB!
Потенциальная почва для ошибок, которые трудно заметить.
Обратите внимание на то, что разделители в адресах с разными протоколами разные. Нетрудно ошибиться и долго ломать голову — почему же Git не выкачивает репозиторий, а только пишет fatal, fatal, fatal...
.git на конце ссылки консольный Git добавляет сам — её можно опустить.
NB!
Вы уже могли догадаться, что Git должен где-то хранить служебную информацию — историю изменений, авторов и прочее. Да, вся служебная информация Git'а хранится в каталоге .git («скрытый» каталог в UNIX-системах). Каталог, в котором расположен .git называется git-директорией. Пока (а лучше никогда) залезать в него не надо — и у вас всё будет работать.
В следующей заметке мы рассмотрим как заливать свои изменения в репозиторий.
No comments:
Post a Comment