После создания репозитория командой $ git init нужно начать контролировать его версии. Для этого воспользуемся командой$ git clone /path/to/repository В случае, если репозиторий удаленный, команда:$ git clone username@host:/path/to/repository Рассмотрим пример клонирования по протоколу http. Пример 1.1 $ git clone http://git.toiit.sgu.ru/projects/pt/example_cpp.git Cloning into 'example_cpp'... $ cd example_cpp/ $ ls main.cpp $ ls -a . .. .git main.cpp В примере 1.1 видно, что в рабочем каталоге проекта, кроме файла проекта, есть специальный, скрытый каталог .git. В этом каталоге содержится вся история проектов в данном репозитории. Для того, чтобы выполнить сборку исходного кода в данном репозитории, нам потребуется добавить в него сотвествующие файлы проекта. Во время клонирования, не явно, в настройки добавляется так называемый удалённый репозиторий откуда проводилось клонирование, который называется origin. В каталоге проекта (локальном репозитории) и удалённом репозитории может хранится несколько наборов зафиксированных изменений - дерево истории проект. Один или несколько параллельно разрабатываемых наборов зафиксированных изменений в дереве истории проекта называются ветками. На рисунке 1 представен пример дерева истории веток проекта.
![]() Изменения файла происходят на Index с использованием команды add: $ git add <filename> $ git add * Это первый шаг в основном рабочем процессе GIT. Для сохранения изменений команды нужно "закоммитить": $ git commit -m "Commit message" Теперь файл находится в HEAD, но все еще не отправлен в удаленный репозиторий. Отправка изменений Сейчас последнее изменение хранится в HEAD. Для отправки его в удаленный репозиторий воспользуемся командой $ git push origin branch, где branch - ваша рабочая ветка. Если вы еще не склонировали хранилище и хотите объединить ваш репозиторий с удаленным сервером, то воспользуйтесь командой
$ git remote add origin <server> Теперь вы можете отправить изменения на сервер. Ветвления Ветви используются для работы над разными особенностями программы изолированно друг от друга. Ветвью по-умолчанию является master. После завершения работы над другими ветвями их нужно соединить с главной ветвью - master командой merge. Примеры. Создание ветви Pipe и переключение управления на неё: $ git checkout -b pipe Возвращение на master: $ git checkout master Удаление ненужной ветви exec: $ git branch -d exec Ветвь не может связываться с другими, пока она не загружена на удаленный репозиторий. Для загрузки ветви используется команда Чтобы выгрузить в свой локальный репозиторий последний добавленный в удаленный репозиторий коммит, нужно выполнить$ git push origin <branch> ![]() При работе с ветками возможна операция объединения (команда git merge), позволяющая применить набор изменений из заданной ветки в текущую. Это позволяет решить вопросы при совместной разработке, а также решить проблему параллельной разработки. Пример 1.4 $ git merge origin/project/make Merge made by the 'recursive' strategy. Makefile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Makefile $ ls main.cpp Makefile В примере 1.4, который нужно выполнить в рабочем каталоге проекта, добавляется так называемый Makefile, для сборки с помощью утилиты make. $ make g++ -c -Wall main.cpp -o main.o g++ main.o -o task $ ls main.cpp main.o Makefile task $ ./task Hello, World! Обновление и объединение $ git pull Для объединения какой-либо ветви с активной в данный момент ветвью используют $ git merge <branch>, где <branch> - ветвь, которую нужно присоединить.
К сожалению, при мерджинге файлы не всегда добавляются автоматически, поэтому необходимо добавить необходимый файл вручную: $ git add <Имя файла> |