Наверняка многие слышали о системе контроля версий git. Сегодня мы рассмотрим весь путь от установки git до внесения своих изменений в удаленный репозиторий на примере библиотеки OsEngine.Для начала скачаем клиент git по ссылке и установим его. Вопросов возникнуть не
должно, просто везде жмем Next. Далее взаимодействие с git будет рассмотрено на примере работы с консольным клиентом.Следующим шагом необходимо зарегистрироваться на сайте https://github.com/. Теперь мы можем присоединиться к работе над OsEngine. Для этого перейдем к репозиторию проекта и в правом верхнем углу нажмем кнопку Fork.
Этим действием мы создали fork (другими словами ответвлние), который хранится в репозитории нашей учетной записи и теперь можно вносить в него изменения, не опасаясь чего-то сломать в главной ветке проекта. Далее этот самый наш репозиторий на github мы будем называть удаленным репозиторием.
Теперь приступим к работе с самим git и первым делом нам надо создать на своем компьютере локальную копию удаленного репозитория. Для этого переходим в желаемую папку, в контекстном меню выбираем пункт Git Bash Here и у нас откроется консоль.
Дальше идем на github в наш репозиторий и нажимаем на зеленую кнопку Clone or download (1) и затем на кнопку под номером 2 на снимке.
В результате ссылка на репозторий скопируется в буфер обмена. Возвращаемся к консоли и выполняем команду:
$ git clone "здесь вставляем ссылку без кавычек"
Начнется процесс копирования удаленного репозитория в локальный и и в текущей папке появиться рабочая копия с именем OsEngine.
Перед началом работы с git, его необходимо настроить. Откройте git bash, задайте логин и пароль командами:
$ git config --global user.name “ваше имя”
$ git config --global user.email “ваша почта”
Посмотреть файл конфигурации позволяет команда:
$ git config --global --list
Ветки в git это тоже самое что и ветки на github. Чтобы создать новую ветку, выполните в консоли команду:
$ git branch желаемое имя
Чтобы переключаться на эту ветвь выполните команду:
$ git checkout имя ветки
для возврата в основную ветку наберите:
$ git checkout master
переименовать ветку:
$ git branch –m новое имя
команда $ git branch позволяет определить в какой ветке сейчас находимся. Удаляет ветку команда
$git branch –D имя ветки
слияние ветки с основной выполняется командой:
$ git merge имя ветки
При слиянии веток, в которых по-разному изменены одинаковые файлы, может возникнуть конфликт и слияния не произойдет. Чтобы выйти из этой ситуации, надо исправить эти файлы должным образом.
Вся суть использования git в commits (коммиты). Коммит – это так называемый снимок состояния проекта на определенном этапе
разработки. Например: у нас есть библиотека OsEngine, мы добавили в
нее новый индикатор и закоммитили, потом решили подправить какой-либо файл в
движке и после этого приложение крашится или не хочет правильно работать. Чтобы
не делать лишнюю работу и не править все обратно, мы можем просто напросто
откатиться к прошлому коммиту, когда приложение работало как надо. Соответственно
вся работа с git крутится вокруг создания, удаления, редактирования, слияния
коммитов и веток.
Допустим мы добавили в проект файл README, но прежде чем коммитить, надо добавить измененные файлы в
индекс, так называемое временное хранилище изменений. Делается это следующим образом: если проиндексировать нужно один файл, то выполняем
$ git add README
и файл README будет добавлен в индекс, если надо проиндексировать все обновленные и новые файлы, то выполняем
$ git add .
Заметьте, именно с точкой в конце и пробелом перед ней.
Если вы случайно проиндексировали не нужный файл, то удалить его из индекса поможет команда git reset, например удалить файл README из индекса:
$ git reset README
Если вы передумали оставлять изменения внесенные в файл, выполните команду
$ git checkout -- имя файла
и он вернется в то состояние, в котором находился во время последнего коммита, только учтите, что все изменения в этом файле исчезнут.
Теперь можно коммитить изменения, делается это при помощи команды:
$ git commit –m “Здесь должен быть комментарий в кавычках”
Следует запомнить, что наличие комментария является обязательным условием. Историю изменений можно посмотреть командой
$ git log
$ git show покажет только последние изменения. Для выхода из режима просмотра нажмите q.
В git есть возможность проиндексировать все изменения и сделать коммит одной командой:
$ git commit –a –m “комментарий в кавычках”
-a означает: добавить все изменения в индекс до передачи.
-m: комментарий.
Если вам нужно отменить последний коммит, используйте команду:
$ git revert HEAD
Отсчет комитов ведется с 0 начиная с последнего, например, если нужно отменить третий коммит, то следует выполнить:
$ git revert HEAD~2
Команда $ git reset --soft HEAD~3 удалит 3 последних коммита и откатит проект в состояние четвертого коммита, при этом сохранив в индексе все изменения последних трех коммитов.
$ git reset -- hard HEAD~3
полностью удалит три последних коммита.
$ git status – основная команда, отслеживающая состояние файлов. Она показывает есть ли изменения в отслеживаемых файлах или наличие не отслеживаемых файлов. Отслеживаемые файлы – это те файлы, которые есть в предидущем коммите. Если же мы добавили в проект новый файл, то он будет считаться не отслеживаемым.
Теперь, когда в локальном репозитории были проведены необходимые изменения, их можно загрузить в удаленный репозиторий.
Делается это выполнением команды:
$ git push origin master
При этом потребуется ввести логин и пароль от github. Однако загрузки может не произойти. Причина может крыться в том, что в удаленном репозитории появились изменения, которые отсутствуют в локальном. Чтобы выйти из положения, необходимо забрать эти новые
изменения в локальный репозиторий командой:
$ git pull
Чтобы избавиться от необходимости каждый раз вводить логин и пароль при отправке измененений в удаленный репозиторий, можно использовать SSH ключи. Для начала ключи надо сгенерировать, выполнив команду:
$ ssh-keygen
Далее 3 раза нажать enter и в дирректории по умолчанию C:\Users\имя пользователя\.ssh появиться папка с ключами. Нужно открыть файл
id_rsa типа PUB в любом текстовом редакторе и скопировать его содержимое. Затем идем на github в настройки своей учетной записи
После чего в колонке слева выбираем пункт: SSH and GPG keys и жмем зеленую кнопку справа New SSH key
задаем Title, в поле Key вставляем данные, скопированные из ключа и жмем
После того как вы внесли все необходимые изменения в свой удаленный репозиторий, можно отправить запрос на слияние с главным репозиторием проекта OsEngine. Просто нажмите кнопку New pull request
а затем
В данной статье мы рассмотрели основные команды git, их хватит для начала работы над проектом OsEngine, используя git и сервис github.
Удачных коммитов!
2 комментария
Инструкцией: git pull
Если нет никаких проблем совместимости(Вы не правили те файлы в которых были изменения на ГитХабе)
Если есть несовместимости, то это проблема. Придётся Вам либо откатывать себе изменения перед слиянием, либо просто скачать всё заного.
Вообще.
Если Вы с ГитБаш и ГитХабом не знакомы. И Вам нужно перезалить своих новых ботов в новый релиз — просто скачайте новую версию библиотеки и руками перезалейте своих ботов.