Алгоритм работы с git репозиторием

GIT – удобная и быстрая децентрализованная система совместной разработки (репозитория).

Рассмотрим несколько приёмов работы с git.

Предварительный настройки git

Можно задать глобальную идентификацию:

git config --global user.name "You Name"
git config --global user.email you_name@you_domain.com

Это задаст ваше имя пользователя и почтовый адрес которыми будут подписываться ваши коммиты.

Распределённая разработка проекта

Условия:

Есть общий сервер git-server (которым, например, может выступать GitHub. Каждый разработчик работает с репозиторием проекта локальный и регулярно обмениваться информацией с общим сервером (выгружает свои изменений и закачивает общие) Инициализация

Перейдите в папку где будет размещаться ваш проект и выполните клонирование проекта с сервера:

git clone ssh://you_name@git-server.com/~/you_project

Протокол доступа к репозирорию зависит от настроек сервера. После выполнения создастся папка проекта you_project и в последующем проводить инициализацию больше не нужно.

Разработка

Перед началом разработки необходимо создать локальную ветку и связать её с удалённой (тоже выполнить нужно один раз):

git checkout -b my_branch origin/my_branch

При создании новых файлов необходимо их пометить на добавление в репозиторий:

git add myfile.txt myfile2.txt myfile3

или рекурсивно папки (указанием точки в конце пути)

git add new_path/.

После внесения изменений их необходимо зафиксировать в коммит: Указываем какие файлы нужно добавить в коммит:

git commit myfile.txt myfile2.txt myfile3

после чего потребуется ввести описание изменений или задать описание сразу (использоваться опцию -m):

git commit myfile.txt myfile2.txt myfile3 -m "описание изменений"

Чтобы закомминить все произведённые изменения репозитория можно выполнить (использоваться опцию -a):

git commit -a -m "описание изменений"

Оправка изменений на сервер: Для отправки измений на общий сервер выполняем:

git push

и все коммиты из локальной ветки будут добавлены в связанную ветку на сервере.

Получение последних изменений с сервера Когда нужно забрать изменения с общего сервера:

git pull

Локальная ветка сразу подтянит все изменений из связанной с ней веткой на сервере.

Для просмотра состояния репозитория регулярно выполняйте:

git status<note warning>warning</note>

Основные операции с git

GIT - удобная быстрая децентрализованная система совместной разработки (репозитория).

Создание репозитория (инициализация)

Создайте папку проекта или войдите в существующую папку с файлами проекта и выполните инициализацию репозитория:

git init

Будет создана начальная структура репозитория в папке .git

Добавление существующих файлов

После инициализации может потребоваться добавить существующие файлы в репозиторий.

Команда:

git add .

добавит все файлы (рекурсивно) в репозиторий.

Клонирование

Выгрузки локальной копии репозитория:

git clone ssh://server.example.com/path/to/Project

Внесение изменений

Мелкие поправки вносятся простым коммитом с последующим закидыванием изменений на сервер.

git add ...
git status
git commit -m "Commit message"

Первой команде в качестве аргументов следует указать имена добавляемых файлов. Следует заметить, что для git’а изменённый файл является новым объектом. Поэтому для того, чтобы обновить файл в репозитории, также как и добавить новый файл, следует выполнить для него git add перед коммитом.

git status

наглядно покажет состояние файлов вашего дерева (неизвестные системе файлы, изменённые, не изменённые, находящиеся в конфликте и т.д.)

Серьёзную работу следует вести в отдельных ветвях для облегчения процесса смешивания нитей разработки обоих участников процесса.

git branch new-feature
git checkout new-feature
…сделать что-нибудь…
git add ...
git commit -m "Commit message"

Команда git branch покажет, что у нас две ветви: master и new-feature. Командой checkout можно переключаться между ними (и делать затем коммиты в каждую, не затрагивая другую). Когда вы закончите разрабатывать новую возможность, настанет время примешать изменения в основную ветвь, master.

git checkout master
git merge new-feature

Отправка изменений и приём изменений основной ветки

Итак, у нас в ветви master имеются изменения, которые неплохо бы отдать своему коллеге (ну и выложить на сервер с целью последующего deploy’а новой версии).

git push origin

Чтобы получить изменения, следует сделать:

git pull origin

В некоторых случаях изменения с сервера невозможно автоматически добавить в вашу ветвь master, тогда вместо pull’a следует использовать merge:

git merge origin/master

…или, в плохом случае…

git merge -s resolve origin/master

Откуда взялся origin? Это имя удалённого репозитория, автоматически добавленное командой git clone. Источник клонирования.

Чистка репозитория

Проверка репозитория и очистка от мусора:

Профилактика репозитория:

git fsck

Подсчёт количества объектов и освобождаемого места при упаковке:

git count-objects

Переупаковка репозитория и удаление мусора:

git gc