Atom и GitHub основы работы

Работа с Git и GitHub в редакторе кода Atom

Если вы новичок и еще не работали с консолью, но уже хотите работать с Git и GitHub, то вместо поиска подходящего GUI, советую вам присмотреться к редактору Atom.

Atom — отличный редактор кода с богатым функционалом и очень гибкой настройкой. Так как он разрабатывался командой GitHub, то вполне логичным и долгожданным стало появление в стартовой сборке версий 1.18+ одноименного пакета “GitHub”, позволяющего работать с репозиториями и системой контроля версий напрямую из редактора без установки дополнительных программ, в том числе даже GitHub Desktop.

Работа с пакетом ведется через панели Git и GitHub. Их можно открыть через меню редактора: Packages -> GitHub -> Toggle Git Tab, или сочетанием клавиш Ctrl + Shift + 9 для Git и Ctrl + Shift + 8 для GitHub.

Подключение удаленного репозитория

Для примера создадим новый репозиторий.

Войдите в свой аккаунт на GitHub и выберите пункт “New repository” в меню справа или нажмите зеленую кнопку “New repository” в разделе “Your repositories”.

Введите название и описание. Поставьте галочку “Initialize this repository with a README”, чтобы автоматически создать файл readme.md. Вы можете выбрать будет ли ваш репозиторий публичным (Public) или приватным (Private, это опция требует оплаты тарифного плана). Нажмите кнопку “Create repository” и создайте новый репозиторий.

Чтобы связать локальный репозиторий с удаленным, нам необходим специальный URL этого репозитория на GitHub.

В созданном репозитории нажмите кнопку “Clone or download” и скопируйте URL.

Откройте командную строку редактора Crtl + Shift + P и введите команду “GitHub: Clone” или воспользуйтесь сочетанием клавиш Alt + G и затем =.

В появившемся диалоговом окне вставьте URL и укажите директорию, в которой будет храниться клон репозитория на вашем компьютере.

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

Команда PUSH

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

Кликнув на дереве локального рипозитория слева, создадим новую папку с именем “css” сочетанием клавиш Shift + A (или пункт “New folder” в контекстном меню). Обратите внимание — на панели Git создание пустой папки не отображается, т.е. папка без содержимого не будет добавлена в коммит, а значит и в репозиторий на GitHub. Добавим в нее несколько новых файлов — клавиша “A” или пункт “New file” в контекстом меню.

В разделе “Unstaged Changes” создание файлов отображается зелеными значками. Желтыми значками будут отображаться изменения в уже проиндексированных файлах. Красными значками будут отображаться удаленные файлы.

Отправим наши изменения в удаленный репозиторий на GitHub. В разделе “Unstaged Changes” нажмите кнопку “Stage All”. Все учтенные изменения будут перенесены в раздел “Staged Changes”. Если вы хотите добавить только некоторые — выберите нужные и нажмите клавишу Enter. При необходимости вы можете вернуть их обратно кнопкой “Unstage All”.

Добавьте сообщение о том, что было изменено в проекте и нажмите кнопку “Commit” или сочетание клавиш Ctrl + Enter.
В самой нижней части окна у иконок “Pull”/”Push” появилась отметка “1” — к отправке готов один пакет изменений. Кликните на иконках и нажмите на появившейся панели кнопку ”Push”.
В диалоговом окне введите ваш username (логин) и пароль от аккаунта на GitHub, в котором вы создавали репозиторий. Нажмите кнопку “Sign in”.
Обновите страницу репозитория на GitHub чтобы проверить внесены ли изменения.

Чтобы не вводить данные аккаунта каждый раз, сохраним их в системе Git нашего локального репозитория. В дереве слева откройте папку “.git” и выберите файл “config”. В строке “url” после “ https:// ” и до названия домена “github.com” введите данные аккаунта. Отделите username от пароля “:” и пароль от домена “@”. В итоге у вас должен получиться адрес вида “https://username:password@github.com/…”.

Это безопасно — файл “config” хранится локально, изменения в нем не фиксируются в коммитах, не попадают в историю и не доступны даже если ваш репозиторий на GitHub публичный.

Тем не менее этот способ временный —только пока вы новичок и консоль вам не покорилась. С этим способом вам придется изменять URL в файле config каждого нового репозитория. В будущем, чтобы правильно организовать доступ к репозиториям вашего аккаунта, вам потребуется настроить SSH-ключи.

Команда PULL

Команда pull позволяет получить изменения, которые произошли в удаленном репозитории, и слить их с нашими локальными файлами.

Теперь отредактируем файлы в удаленном репозитории.

В файл “style-1.css” мы добавим новые строки.
Добавим коммит и сохраним изменения.
А файл “style-3.css” удалим.

Важно! Для примера в коммитах просто дублируется информация об изменениях, но в проектах в них не следует просто констатировать изменение файла или строк (это можно увидеть и при просмотре коммита), указывайте зачем были внесены эти изменения — исправлен баг, сверстан новый блок, изменена сетка.

Теперь вернемся в редактор и попытаемся внести в локальный репозиторий те изменения, которые произошли в удаленном. На панели Git нажмем кнопку “Fetch”, чтобы обновить информацию об удаленном репозитории.

Рядом с кнопкой “Pull” появится значок “2” — в удаленном репозитории есть два новых коммита.

Выполним команду pull и проверим наш локальный репозиторий — в него добавились все изменения из главного репозитория.

Конфликты

При слиянии (merge) локального и удаленного репозитория могут возникать конфликты. Редактор постарается помочь вам их предотвратить. К примеру, при отправке push редактор может выдать предупреждение:

“Push отклонен. Последние изменения находятся в удаленном репозитории. Воспользуйтесь командой pull, прежде чем снова отправить push”

Эта проблема решается предварительным запросом pull.

Конфликты происходят из-за разных коммитов, изменяющих одну область кода. Например, в GitHub уже сохранен новый цвет фона и в тот же момент мы изменили его у себя, а затем попытались запросить pull. Редактор выдаст предупреждение:

“Pull прерван. Локальные изменения в следующих файлах будут перезаписаны слиянием: … Просьба внести изменения или спрятать их перед слиянием.”

Кликнув по изменению в разделе “Unstaged Changes”, можно увидеть какие строки файла были изменены. Изменение можно удалить из этого раздела (тогда файл вернется в состояние, сохраненное в последнем коммите) сочетанием клавиш Ctrl + Backspace или соответствующей командой в контекстном меню и затем снова запросить pull.

Красным выделено то, что было сохранено в последнем коммите. Зеленым выделено то, что было изменено, но еще не закоммичено.

Конфликт изменений может выглядеть следующим образом:

Здесь вы можете выбрать из двух вариантов — локальные изменения (our changes) или изменения из удаленного репозитория (their changes). Так же вы можете отредактировать любое из них и уже потом его выбрать. К примеру скопировать конфликтный код из одного блока в другой и закомментировать его, чтобы позже разобраться в коде. Затем выбрать нужный вариант кнопкой “Use me” и потом опять синхронизировать данные в репозиториях командами pull/push.

Изменение коммита

При необходимости можно внести изменения в последний коммит, который еще не отправлен в удаленный репозиторий. Для этого нужно поставить галочку “Amend” рядом с кнопкой “Commit”. При этом надпись на ней измениться на “Emmend commit”.

Создание ветки

Также в редакторе можно создавать новые ветки репозитория и переключаться между ними.

Горячие клавиши

Полезные сочетания клавиш для работы с пакетом можно увидеть, вбив в командную строку редактора запрос “github”.

Командную строку Atom можно вызвать сочетанием клавиш Ctrl + Shift + P.

Более подробно о редакторе Atom и пакете GitHub можно узнать на официальном сайте проекта Atom for GitHub и в соответствующем разделе его документации — GitHub package

Зашарить