Алгоритм работы с 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