Как пользоваться GitHub на компьютере с Linux

Опубликовано: 15.03.2019
GitHub — один из используемых сервисов размещения проектов для совместной разработки. Он поддерживает контроль версий, возможность отслеживания изменений кода, сравнение строк, а также он бесплатен.
В данной статье приведены примеры использования сервиса на компьютере под управлением операционных систем семейства Linux. Мы рассмотрим, как создать проект на локальном компьютере и залить его на сервис с помощью командной строки. Рассмотренные варианты использования git также можно применять на desktop системах, запустив окно терминала.
Установка git
Управление выполняется с помощью приложения git. Если его нет в системе, установку можно выполнить из репозитория.
Если используем CentOS / Red Hat:
yum install git-core
Если используем Ubuntu / Debian:
apt-get install git
Если мы хотим воспользоваться сервисом с компьютера Windows или Mac OS, необходимо скачать и установить desktop версию с официального сайта.
Синтаксис
Команды имеют следующий синтаксис:
* полный перечень опций, команд и аргументов можно получить командой man git.
Создание проекта на локальном компьютере
Прежде чем отправить проект на GitHub, создаем его на нашем компьютере. Для этого переходим в каталог с файлами проекта:
Инициализируем проект для git:
Мы получим ответ похожий на:
Initialized empty Git repository in /projects/.git/
Это означает, что репозиторий git создан.
Теперь добавим файлы в репозиторий:
* данной командой мы добавили папку и ее содержимое в репозиторий git.
Отправка данных на GitHub
Теперь можно отправить данные на сервис. Для этого у нас должна быть зарегистрированная учетная запись и создан репозиторий на GitHub.
Создание репозитория
Переходим на портал github.com и входим в систему или проходим несложную регистрацию:

Проходим процесс подтверждения, что мы не робот. Затем завершаем несколько шагов регистрации, нажимая Submit. В итоге мы получим письмо на адрес электронной почты, которую указали при регистрации. Необходимо будем подтвердить email, перейдя в письме по кнопке Verify email address.
Создаем репозиторий. Для этого кликаем по иконке профиля и переходим в раздел Your repositories:

И кликаем по кнопке New. В следующем окне даем название репозиторию и нажимаем Create repository:

Мы увидим страницу с путем к репозиторию:

Заливаем проект в репозиторий на GitHub
Добавляем комментарий к нашему проекту:
git commit -m «Очередное изменение проекта» -a
* где Очередное изменение проекта — произвольный комментарий; параметр -a указывает, что комментарий нужно применить ко всем измененным файлам.
Теперь подключаемся к созданному репозиторию:
git remote add origin https://github.com/dmosktest/project1.git
* где dmosktest — логин, который был указан при регистрации на github, а project1 — название, которое мы задали, когда создавали репозиторий.
* удалить удаленный репозиторий можно командой git remote rm origin.
Закидываем проект на GitHub:
git push origin master
* где master — ветка проекта (веток может быть несколько).
В нашем проекте на GitHub должны появиться файлы проекта:

Получение файлов с GitHub
Для загрузки на компьютер файлов, создаем каталог с проектом и переходим в него:
Проводим начальную настройку локального репозитория:
Подключаемся к удаленному репозиторию:
git remote add origin https://github.com/dmosktest/project1.git
Скачиваем проект командой:
git pull https://github.com/dmosktest/project1.git master
Клонирование проекта
Например, использую наш репозиторий:
git clone https://github.com/dmosktest/project1.git
* данная команда создаст в текущей папке каталог project1 и инициализирует его как локальный репозиторий git. Также загрузит файлы проекта.
Возможные ошибки
1. При попытке отправить данные на GitHub, получаем ошибку:
error: src refspec master does not match any.
error: failed to push some refs to ‘https://github.com/dmosktest/project1.git’
* где dmosktest/project1.git — путь к нашему репозиторию.
Причина: проект ни разу не был зафиксирован (закоммичен).
Решение: добавляем комментарий к нашему проекту:
git commit -m «first commit»
Можно ли создать репозиторий GitHub через консоль?
Например, я не хочу заходить в браузер и создавать через аккаунт GitHub публичный репозиторий, можно ли это сделать через терминал (консоль)?
- Вопрос задан более трёх лет назад
- 4699 просмотров
Комментировать
Решения вопроса 2

it-шник самоучка
Так как среди ответов я не нашел что искал, вот что, как я понял, хотел узнать автор вопроса:
Не используя браузер создать на Github репозиторий используя только командную строку — так сказать удаленно.
Для того чтобы это было возможно в этот раз и в будущем, все же необходимо зайти на github и создать токен доступа к API гитхаба. Делается это по следующей инструкции https://docs.github.com/en/free-pro-team@latest/gi.
Токен используется в качестве пароля для команды curl использование которой для целей создания репозитоория описывается в виде примеров здесь https://coderoad.ru/2423777/Можно-ли-создать-удале.
Ниже привожу полный список команд начиная от создания папки с проектом и заканчивая его залитием на вновь созданный репозиторий:
mkdir test cd test git init echo "This repo was created remotely" >> README.md git add . git commit -m "first commit" git remote add origin git@github.com:USER/test.git curl -u 'USER:TOKEN' https://api.github.com/user/repos -d '' git push -u origin master
USER — ваш логин на гитхабе
TOKEN — токен типа 6ccfd64d55fc1ca1cc26ffe2b9351cc9 сгенерированый по инструкции
Git + GitHub tutorial. Основы работы с GitHub на mac
В статье подробно рассматривается как создать удалённый репозиторий на GitHub и как работать с GitHub локально, синхронизируя все изменения.
10 min read
Jun 11, 2019
Статья обновлена и дополнена
☝ Этот материал подойдёт тем, кто уже знает, зачем нужны Git и GitHub, но ещё не пользовался ими.
Всего за 15–20 минут (время прочтения и повторения описанных действий) вы научитесь:
- ✅ работать с Git в Терминале на macOS
- ✅ создавать удалённые репозитории на GitHub
- ✅ и главное — связывать локальные репозитории с удалёнными
Я собрал этот материал из нескольких курсов и гайдов для разных git-сервисов. Выбрал лучшее, убрал лишнее и адаптировал его для GitHub и mac. Так что вы получите максимум пользы, за минимум времени.
По мере прочтения, рекомендуется сразу повторять описанные шаги. Так вы лучше усвоите материал, заведёте аккаунты в нужных системах и получите практику работы в Терминале и с GitHub.
Подготовка к работе
Для работы потребуются:
- аккаунт на GitHub
- Терминал (предустановлен на macOS)
- Git — можно установить отсюда
☝ Для систем Git есть различные графические клиенты. У GitHub есть свой. Позже, вы сможете выбрать и использовать один из них, но в этой инструкции, для лучшего погружения и практики, используется Терминал.
Настройка Git
Если вы ещё не пользовались Git, то для начала необходимо зарегистрироваться как пользователь системы — добавить в систему Имя пользователя и e-mail. Запустите Терминал, и выполните поочерёдно две команды (имя и имейл вписываются без скобок):
git config --global user.name
git config --global user.email
Для проверки можно воспользоваться этими командами, они покажут какие данные внесены в систему:
git config user.name
git config user.email
Терминал закрывать не надо, он потребуется для дальнейшей работы.
Создание удалённого репозитория
Удалённый репозиторий на GitHub — это облако, в котором хранятся файлы проекта и история их изменений. Локально же — это просто папка проекта на компе.
Репозитории на GitHub используются для самых разных целей:
- расшаривания кода и другой информации (например, список интересного в телеграм)
- совместной разработки, обсуждения и ведения проектов (не только связанных с кодом, например, карта навыков и развития тим-лида)
- и даже для ведения тасок (во встроенном таск-треккере)
При этом, работа непосредственно с кодом и файлами, ведётся локально — в папках проектов на компе. Для этого, папки связываются с удалёнными репозиториями.
Порядок действий такой:
- создаётся проект на github.com
- клонируется на комп
☝ Можно делать и наоборот, но приведённая последовательность больше подходит для новичков.
Для каждого проекта лучше создавать отдельный репозиторий на Github. Ниже описано создание удалённого репозитория и локальной папки для тестового проекта hello-world, и их синхронизация.
Создание и настройка
Новый репозиторий на GitHub можно создать, нажав в правом верхнем углу на + и выбрав New repository в выпадающем меню:
Откроется страница настройки нового репозитория (скрин ниже), на которой:
- вводится имя репозитория
- добавляется краткое описание проекта (не обязательно)
- выбирается тип репозитория
☝ На GitHub есть два типа репозиториев — Public (будет виден всем, на странице вашего аккаунта, и все смогут писать коммиты), Private (будет виден только вам и тем, кому вы предоставите доступ в настройках репозитория).
- добавляется файл README (чекбокс Initialize this repository with a README)
☝ Для Public репозиториев принято добавлять файл README с описанием проекта. В файл добавится описание из поля Description. А вся информация из этого файла будет отображаться на странице проекта.
- при необходимости можно добавить файл .gitignore (это уже для проектов посложнее, и в рамках этого материала не рассматривается)
- при необходимости, добавляются лицензии (например, на используемые шрифты)
После такой элементарной настройки, уже можно создать репозиторий ⟶ зелёная кнопка Create repository.
Страница репозитория
На открывшейся странице созданного репозитория, всё что нам нужно по проекту, находится на вкладке Code. Тут же выводится содержание файла README.
На момент создания, у проекта есть один файл README.md, один commit (запись о факте создания репозитория) и одна ветка (главная ветка master).
☝ Для работы продакта, или аналитика, зачастую, достаточно основной ветки master. Дополнительные ветки создаются для сложных проектов, или для совместной работы. Использование дополнительных веток будет рассмотрено в отдельном материале. Не забудьте нажать Follow.
Рабочая папка для проектов
Скорее всего, у вас уже есть папка для проектов. Если ещё нет, то создайте. Далее, необходимо будет перейти в неё в Терминале (описано ниже).
☝ Папку самого проекта создавать не нужно, она клонируется из GitHub.
На начальном этапе, работать с файлами и папками привычнее в Finder. Быстро перейти сразу в папку для проектов (после её создания) в Терминале, можно прямо из Finder, правым кликом по папке для проектов ⟶ Службы ⟶ Новая вкладка Терминала по адресу папки.
Откроется вкладка Терминала с нужным нам адресом.
Клонирование удалённого репозитория
Чтобы работать с проектом локально, и при этом, все изменения синхронизировать с удалённым репозиторием, необходимо клонировать GitHub-проект.
Для этого на странице проекта на GitHub необходимо нажать кнопку Clone or download и скопировать адрес репозитория.
Далее, в Терминале (в той вкладке, которая открылась из Finder) выполняется команда (используя скопированный URL без скобок):
git clone
По завершению отработки команды, Терминал выдаст done — папка проекта, которую мы клонировали с GitHub появилась в папке для проектов на компе. Теперь можно работать с проектом локально — создавать файлы, редактировать их и все изменения синхронизировать с удалённым репозиторием.
TLDR
Чтобы связать новый проект на GitHub с папкой проекта на компе, надо:
- создать проект на GitHub (новый репозиторий) и скопировать его УРЛ
- перейти в Терминале в общую папку для проектов (папку самого проекта создавать не надо)
- клонировать проект с GitHub — git clone (URL без скобок)
☝ Таким способом можно скопировать любой проект с Гитхаба себе на комп
Синхронизация локальных изменений с удалённым репозиторием на GitHub
Изменения в проекте
Для демонстрации синхронизации я сделаю два изменения:
- скорректирую файл README
- добавлю картинку в папку проекта
Повторите эти действия, для наработки навыка использования Git.
В файл README.md добавлена строка “My furst commit”. Сделана опечатка, которая будет исправлена позже, когда будет рассматриваться изменение файлов в репозитории GitHub.
В папку проекта добавлена картинка project-page.png (один из скриншотов из этого поста).
Git flow
Чтобы локальные изменения (в данном примере — обновление файла и добавление картинки) синхронизировались с удалённым репозиторием, необходимо их сначала добавить, потом закоммитить, а потом запушить.
Основные действия — это коммит и пуш. А git add — всего лишь служебная команда для регистрации/добавления изменений.
☝ Commit — это точка сохранения проекта, в которую можно будет вернуться, если что-то пойдёт не так (как сохранение в игре). Эти сохранения и синхронизируются между локальным и удалённым репозиториями.
Push — это внесение закоммиченых локальных изменений в проект на удалённом репозитории.
Подробно о каждом действии — далее.
Информационная команда git status
Все манипуляции с проектом делаются в папке проекта. Для этого, необходимо открыть её в Терминале. Можно использовать приведённый выше способ (правый клик по папке в Finder). Или, если в Терминале уже открыта папка для проектов, можно переместиться в папку проекта командой (имя папки проекта вписывается без скобок):
Команды git add и git commit
В Терминале перейдём в папку проекта (все изменения с проектом делаются в папке проекта). Для отслеживания изменений используется команда:
git status
Все используемые git и github команды с их описанием будут приведены в отдельном блоке в конце материала.
Для отслеживания изменений в проекте используется команда:
git status
☝ git status можно не использовать, но хорошо знать, что такая возможность есть, и можно в любой момент посмотреть информацию о состоянии проекта.
Результат работы команды — вывод информации о проекте. Незарегистрированные изменения выделены красным. Структура информации следующая:
- On branch master — указана текущая ветка
☝ Это будет полезно при работе с несколькими ветками.
- Changes not staged for commit — есть незарегистрированные изменения (modified: README.md)
- Untracked files — есть новые файлы (project-page.png)
- no changes added to commit — в данный момент нечего коммитить
Тут же, в круглых скобках git сам даёт подсказки, что можно делать дальше: use git add …
git add (добавить)
Командой git add регистрируются (добавляются) изменения в папке проекта. В больших проектах, при изменении одного файла, обычно добавляют только его (имя файла с расширением, без скобок):
git add
Следующая команда регистрирует (добавляет) сразу все изменения. В небольших проектах можно всегда использовать её, т.к. это проще и быстрее:
git add .
Чтобы убедиться, что все изменения добавлены, можно снова выполнить git status (это не обязательно).
git commit (закоммитить)
Для создания коммита, и добавления к нему комментария используется расширенная команда (комментарий пишется как в примере — в кавычках):
git commit -m "Change README, and add screenshot"
☝ Коммиты, обычно, делаются после какого то блока изменений — добавлен/переписан блок кода, или новый блок информации. Коммиты хорошо сопровождать описанием о проделанных изменениях.
Теперь git status показывает, что изменений больше нет. И что есть один коммит, не добавленный в ветку.
git push (запушить)
Чтобы запушить локальные изменения на удалённый репозиторий, используется команда git push . Или её расширенный вариант, с указанием ветки, куда пушатся изменения:
git push origin master
☝ При первом использовании git push , Git запросит логин и пароль от аккаунта на GitHub. При вводе пароля, никакие символы не появляются и курсор не сдвигается — это нормально, просто введите полностью и нажмите энтер. Если пароль введён без ошибок — всё сработает.
В git status , теперь будет информация, что никаких новых изменений нет (nothing to commit), и коммитить нечего.
Теперь проект на Гитхабе актуальный — тут отобразились все изменения, которые были сделаны локально: добавился один commit, добавился файл, изменился README.
TLDR
Чтобы после изменения проекта, отправить локальные правки на удалённый репозиторий, надо:
- перейти в Терминале в папку самого проекта
- зарегистрировать изменения — git add .
- создать коммит — git commit -m «Комментарий»
- запушить коммит на GitHub — git push origin master
☝ Для отслеживания статуса изменений в проекте используется команда git status
Обновление локального репозитория, после изменений проекта на GitHub
Бывает так, что файлы проекта правятся прямо на сайте GitHub. Или кто-то из участников проекта запушил новые изменения. В обоих случаях, необходимо получить эти изменения и обновить локальный репозиторий.
Редактирование файлов проекта на сайте удалённого репозитория
Для демонстрации синхронизации я изменю файл README на github.com.
☝ Все изменения в удалённом репозитории являются коммитами. Т.е. при сохранении изменений файла, сразу добавляется коммит в проекте на GitHub.
Для редактирования файлов на сайте GitHub используется встроенный редактор. Порядок действий такой:
- Вносятся изменения в файле;
- Добавляется описание коммита;
- Сохраняется коммит.
После сохранения, коммит добавляется в проект и сразу примеряются все изменения.
На Гитхабе хранится история всех коммитов и подробная информация по ним. Если зайти в любой коммит, можно посмотреть какие правки были сделаны. Удалённые строки подсвечиваются красным, добавленные — зелёным.
Обновление локального репозитория
Для обновления локального репозитория, после любых изменений проекта на Гитхабе, в Терминале (надо находится в папке проекта) используется команда:
git pull
В результате выполнения команды, в Терминале отображаются изменения, которые мы забираем с удалённого репозитория. По завершению работы команды git pull , все файлы проекта на компе обновляются до состояния удалённого репозитория. Можно убедиться в этом, проверив файл REAMDE в локальной папке проекта.
TLDR
Чтобы после изменения проекта на Гитхабе, актуализировать проект на компе, надо:
- в Терминале, находясь в папке проекта выполнить git push
Список команд для работы в Терминале с Git и GitHub
Настройка Git
- git config —global user.name (Имя без скобок) — добавление имени пользователя
- git config —global user.email (имейл без скобок) — добавление имейла пользователя
- git config user.name — проверка имени пользователя
- git config user.email — проверка имейла пользователя
Работа с репозиториями
- git clone (URL без скобок) — клонирование удалённого репозитория
- git status — посмотреть статус проекта
- git add (имя файла без скобок) — добавление конкретного файла в будущий коммит
- git add . — добавление всех файлов в будущий коммит
- git commit -m «описание коммита» — создание коммита с описанием
- git push origin master — запушить коммиты в ветку master
- git pull — актуализировать проект на компе из удалённого репозитория
2.1 Основы Git — Создание Git-репозитория
Если вы хотите начать работать с Git, прочитав всего одну главу, то эта глава — то, что вам нужно. Здесь рассмотрены все базовые команды, необходимые вам для решения подавляющего большинства задач, возникающих при работе с Git. После прочтения этой главы вы научитесь настраивать и инициализировать репозиторий, начинать и прекращать контроль версий файлов, а также подготавливать и фиксировать изменения. Мы также продемонстрируем вам, как настроить в Git игнорирование отдельных файлов или их групп, как быстро и просто отменить ошибочные изменения, как просмотреть историю вашего проекта и изменения между отдельными коммитами (commit), а также как отправлять (push) и получать (pull) изменения в/из удалённого (remote) репозитория.
Создание Git-репозитория
Обычно вы получаете репозиторий Git одним из двух способов:
- Вы можете взять локальный каталог, который в настоящее время не находится под версионным контролем, и превратить его в репозиторий Git, либо
- Вы можете клонировать существующий репозиторий Git из любого места.
В обоих случаях вы получите готовый к работе Git репозиторий на вашем компьютере.
Создание репозитория в существующем каталоге
Если у вас уже есть проект в каталоге, который не находится под версионным контролем Git, то для начала нужно перейти в него. Если вы не делали этого раньше, то для разных операционных систем это выглядит по-разному:
$ cd /home/user/my_project
$ cd /Users/user/my_project
$ cd C:/Users/user/my_project
а затем выполните команду:
$ git init
Эта команда создаёт в текущем каталоге новый подкаталог с именем .git , содержащий все необходимые файлы репозитория — структуру Git репозитория. На этом этапе ваш проект ещё не находится под версионным контролем. Подробное описание файлов, содержащихся в только что созданном вами каталоге .git , приведено в главе Git изнутри
Если вы хотите добавить под версионный контроль существующие файлы (в отличие от пустого каталога), вам стоит добавить их в индекс и осуществить первый коммит изменений. Добиться этого вы сможете запустив команду git add несколько раз, указав индексируемые файлы, а затем выполнив git commit :
$ git add *.c $ git add LICENSE $ git commit -m 'Initial project version'
Мы разберем, что делают эти команды чуть позже. Теперь у вас есть Git-репозиторий с отслеживаемыми файлами и начальным коммитом.
Клонирование существующего репозитория
Для получения копии существующего Git-репозитория, например, проекта, в который вы хотите внести свой вклад, необходимо использовать команду git clone . Если вы знакомы с другими системами контроля версий, такими как Subversion, то заметите, что команда называется «clone», а не «checkout». Это важное различие — вместо того, чтобы просто получить рабочую копию, Git получает копию практически всех данных, которые есть на сервере. При выполнении git clone с сервера забирается (pulled) каждая версия каждого файла из истории проекта. Фактически, если серверный диск выйдет из строя, вы можете использовать любой из клонов на любом из клиентов, для того, чтобы вернуть сервер в то состояние, в котором он находился в момент клонирования (вы можете потерять часть серверных хуков (server-side hooks) и т. п., но все данные, помещённые под версионный контроль, будут сохранены, подробнее об этом смотрите в разделе Установка Git на сервер главы 4).
Клонирование репозитория осуществляется командой git clone . Например, если вы хотите клонировать библиотеку libgit2 , вы можете сделать это следующим образом:
$ git clone https://github.com/libgit2/libgit2
Эта команда создаёт каталог libgit2 , инициализирует в нём подкаталог .git , скачивает все данные для этого репозитория и извлекает рабочую копию последней версии. Если вы перейдёте в только что созданный каталог libgit2 , то увидите в нём файлы проекта, готовые для работы или использования. Для того, чтобы клонировать репозиторий в каталог с именем, отличающимся от libgit2 , необходимо указать желаемое имя, как параметр командной строки:
$ git clone https://github.com/libgit2/libgit2 mylibgit
Эта команда делает всё то же самое, что и предыдущая, только результирующий каталог будет назван mylibgit .
В Git реализовано несколько транспортных протоколов, которые вы можете использовать. В предыдущем примере использовался протокол https:// , вы также можете встретить git:// или user@server:path/to/repo.git , использующий протокол передачи SSH. В разделе Установка Git на сервер главы 4 мы познакомимся со всеми доступными вариантами конфигурации сервера для обеспечения доступа к вашему Git репозиторию, а также рассмотрим их достоинства и недостатки.