TradingActivityDemo – Git, GitHub
(NetBeans)
Этап 1
Устанавливаем приложение для контроля версий Git на Windows7/8/10
Настраиваем Git
Создаем локальный репозиторий проекта при помощи Git
1. Скачиваем дистрибутив с сайта git-scm.com;
2. Устанавливаем в каталог, находящийся в корне логического диска и не содержащий пробелов в имени;
3. При установке выбираем опцию работы через командную строку ОС;
4. Заходим в «проводнике» в каталог проекта, ПКМ – Git Bash – набираем и выполняем команду git init (в каталоге появится скрытый подкаталог с настройками репозитория). Автодополнение - tab, вставка текста – ctrl+insert (shift+insert);
5. Создаем локального пользователя (для текущего проекта) или глобального (для текущей ОС). Например, глобальный пользователь с именем user1 и email-ом tyaa@ukr.net:
git config --global user.name “user1”
git config --global user.email tyaa@ukr.net
6. Проверяем результативность изменений конфигурации: открываем файл глобальных настроек.gitconfig, находящийся в каталоге настроек текущего пользователя ОС, а также выполняем команду вывода списка глобальных настроек в консоль:
Git config --list
7. В каталоге проекта создаем текстовый файл локальных настроек с именем.gitconfig, добавляем в него пути к каталогам и файлам, которые программа контроля версий не будет «видеть». Например, скрываем каталоги настроек среды разработки, настроечные файлы build.xml и каталоги готовых дистрибутивов на любой глубине вложенности:
nbproject/*
build/*
build.xml
dist/*
8. В консоли выполняем команду проверки состояния проекта (все «видимые» файлы и каталоги должны быть отмечены, как не поставленные под контроль, а «скрытые» от контроля не должны отображаться вообще):
Git status
cd TAServer
git status --untracked-files=all
9. Ставим под контроль всех не «скрытых» от git каталогов и файлов (в консоли мы должны находиться в корне проекта), затем проверяем результат командой git status:
Git add.
10. Для вывода отдельного файла из-под контроля перед коммитом выполняем команду, показанную в подсказке, затем ненужный файл добавляем в файл игнора:
git rm --cached file_name.file_extention
11. Выполняем команду коммита с параметрами «добавить новые файлы в индекс» и «коммитить все подконтрольные файлы, находящиеся в индексе», и репозиторий готов (без параметра -m внесение изменений, в данном случае, комментария в коммит, будет предложено сделать в консольном текстовом редакторе vim. Также при помощи изменения настройки core.editor в конфигурации можно установить другой текстовый редактор, имеющийся в ОС):
git commit -a -m "init"
Этап 2
Регистрируем изменения проекта в репозитории
Просматриваем историю репозитория
1. Вносим изменение в любой текстовый файл проекта (например, файл каких-либо исходных кодов), находящийся в репозитории, проверяем статус репозитория в консоли, выполняем повторное добавление изменившегося файла в индекс, перейдя в соответствующий каталог в консоли. Делаем коммит с комментарием об изменении. Параметр -a в данном случае во второй команде можно опустить, т.к. команда add выполняет адресное индексирование файла, имя которого указано:
git add file_name.file_extention
git commit -a -m "some comment"
2. Если не выполнять добавление изменившихся файлов в индекс, при следующих коммитах будет коммититься устаревшая копия файла! Откат файла в репозитории до одного из прошлых состояний (предпоследнего):
git checkout -- file_name.file_extention
3. Для просмотра логов выполняем команду git log. Выход из просмотра – клавиша q на клавиатуре. Просмотр документации по конкретной команде: git help command_name. В документации можно найти настройки форматирования вывода журанала;
Этап 3
Создаем ветки репозитория
Объединяем изменения, зарегистрированные в разных ветках
1. Отщепляем новую ветку от существующего репозитория и проверяем список веток (параметр -b создает ветку, а команда затем переключает сеанс консоли на эту ветку):
git checkout -b my_new_branch
Git branch
2. Первая команда без параметра, но с именем ветки переключает на нее, вторая команда с именем ветки создает новую ветку без переключения на нее;
3. Вносим изменение в какой-либо файл. Находясь в консоли на новой ветке, делаем добавление изменившегося файла в индекс и коммит. Добавляем еще одну ветку, проделываем для нее те же операции, только без изменений в текстовом файле. Коммитим на основной ветке «мастер», предварительно внеся в тот же текстовый файл проекта другие изменения, чем были зарегистрированы в первой дополнительной ветке. Получен конфликт изменений в основной и первой дополнительной ветках.
4. Для разрешения конфликта переключаемся в первую дополнительную ветку, все изменения должны быть закоммичены. Скачиваем, устанавливаем и указываем в консоли утилиту разрешения конфликтов:
git config --global merge.tool kdiff3
5. Если утилита не найдена, нужно выполнить данную команду с явным указанием пути:
git config --global mergetool.kdiff3.cmd '"C:\\Program Files (x86)\\KDiff3\\kdiff3" $BASE $LOCAL $REMOTE -o $MERGED'
6. Начинаем слияние текущей ветки с основной, получаем ошибку:
Git merge master
7. Запускаем утилиту разрешения конфликтов, нажимаем «ввод»:
Git mergetool
8. В графическом окне делаем конфликтные строки одинаковыми и жмем сохранение;
9. В ткущей ветке (первой дополнительной) коммитим;
10. Переходим в «мастер», выполняем слияние с изменениями, произошедшими в дополнительных ветках:
git merge my_new_branch
Этап 4
Заливаем проект с контролем версий на GitHub и работаем с ним совместно с другими пользователями
1. Регистрируемся на сайте GitHub, создаем на нем бесплатный репозиторий (открыт для всех), первоначальную инициализацию не выбираем, т.к. проект у нас уже есть;
2. Читаем список рекомендуемых команд, выполняем подключение к удаленному репозиторию (remote) и заливаем (push) проект с локального репозитория в удаленный. Например, git push origin master;
3. При выполнении этих действий нужно вводить имя и пароль аккаунта. Если используются удаленный репозиторий на рабочем сервере, например, в Интернете, и общий рабочий репозиторий в локальной сети, имя пользователя и пароль создаются при ручной генерации ключей: https://git-scm.com/book/ru/v1/Git-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5-%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%BE%D0%B3%D0%BE-SSH-%D0%BA%D0%BB%D1%8E%D1%87%D0%B0;
4. Если другой пользователь сделал изменения в удаленном репозитории, нужно обновить с него свой локальный репозиторий, выполнив команду pull;
5. Первоначальное скачивание чужого проекта с удаленного репозитория. Клонирование из локальной сети (адрес_компьютера:имя_проекта):
git clone git@ 192.168.0.116:musicsale.com.ua
TODO: если используете OS Linux, выполните аналогичные действия под ним. Используйте среду разработки для разрешения конфликтов слияния веток репозитория.