Возможно ли создать удаленное репо на GitHub из CLI, не открывая браузер? - PullRequest
329 голосов
/ 11 марта 2010

Я создал новый локальный репозиторий Git:

~$ mkdir projectname
~$ cd projectname
~$ git init
~$ touch file1
~$ git add file1
~$ git commit -m 'first commit'

Есть ли какая-нибудь команда git для создания нового удаленного репо и отправки моего коммита на GitHub отсюда? Я знаю, что нет ничего страшного в том, чтобы просто запустить браузер и перейти наверх Создайте новый репозиторий , но если есть способ добиться этого с помощью CLI, я был бы счастлив.

Я прочитал огромное количество статей, но ни одна из найденных статей не упоминает, как создать удаленное репо из CLI с помощью команд git. Хорошая статья Тима Лукаса Настройка нового удаленного репозитория git - это самое близкое, что я нашел, , но GitHub не обеспечивает доступ к оболочке .

Ответы [ 22 ]

308 голосов
/ 26 апреля 2012

Команды CLI для github API v3 (замените все ключевые слова CAPS):

curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}'
# Remember replace USER with your username and REPO with your repository/application name!
git remote add origin git@github.com:USER/REPO.git
git push origin master
204 голосов
/ 11 марта 2010

Вы можете создать репозиторий GitHub через командную строку, используя GitHub API.Ознакомьтесь с API хранилища .Если вы прокрутите около трети пути, вы увидите раздел, озаглавленный «Создать» , который объясняет, как создать репо через API (прямо выше, это раздел, который объясняет, как форкнутьрепо с API тоже).Очевидно, что вы не можете использовать git для этого, но вы можете сделать это через командную строку с помощью инструмента, подобного curl.

За пределами API, нет способа создать репо на GitHubчерез командную строку.Как вы заметили, GitHub не разрешает доступ к оболочке и т. Д., Кроме API GitHub, единственный способ создать репо - через веб-интерфейс GitHub.

65 голосов
/ 27 сентября 2011

Это можно сделать тремя командами:

curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
git remote add origin git@github.com:nyeates/projectname.git
git push origin master

(обновлено для v3 Github API)


Объяснение этих команд ...

Создание репозитория github

    curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
  • curl - это команда unix (выше работает и для Mac), которая извлекает URL-адреса и взаимодействует с ними. Обычно он уже установлен.
  • "- u" - это параметр curl, который задает имя пользователя и пароль для аутентификации на сервере.
    • Если вы просто дадите имя пользователя (как показано в примере выше), curl запросит пароль.
    • Если вы не хотите вводить пароль, см. Документацию githubs api по Аутентификация
  • "- d" - это параметр curl, который позволяет отправлять POST-данные с запросом
  • «имя» - единственные требуемые данные POST; Я хотел бы также включить "описание"
  • Я обнаружил, что было бы хорошо заключить в кавычки все данные POST одинарными кавычками ''

Определите, куда нажать

git remote add origin git@github.com:nyeates/projectname.git
  • добавить определение местоположения и наличия подключенного (удаленного) репо на github
  • «origin» - это имя по умолчанию, используемое git для определения источника
    • технически не пришел из github, но теперь источником записи будет репозиторий github
  • "git@github.com: nyeates" - это ssh-соединение, которое предполагает, что вы уже настроили доверенную пару ssh-ключей с github.

Нажмите локальное репо на github

git push origin master
  • нажмите на исходный пульт (github) из главного локального филиала
50 голосов
/ 13 ноября 2012

Если вы установите defunkt's превосходный Концентратор , тогда это станет так же просто, как

git create

По словам автора, " hub - это оболочка командной строки для git, которая делает вас лучше в GitHub. "

15 голосов
/ 03 августа 2015

Простые шаги (используя git + hub => GitHub ):

  1. Установка Hub ( GitHub ).

  2. Зайдите в свой репо или создайте пустой: mkdir foo && cd foo && git init.

  3. Выполнить: hub create, он впервые спросит вас об учетных данных GitHub.

    Использование: hub create [-p] [-d DESCRIPTION] [-h HOMEPAGE] [NAME]

    Пример: hub create -d Description -h example.com org_name/foo_repo

    Hub запрашивает имя пользователя и пароль GitHub при первом обращении к API и обменивает его на токен OAuth, который он сохраняет в ~/.config/hub.

    Чтобы явно указать имя нового хранилища, введите NAME, опционально в ORGANIZATION/NAME форме для создания в организации ты член.

    С помощью -p создайте частный репозиторий и с -d и -h устанавливают описание репозитория и домашнюю страницу URL соответственно.

    Чтобы избежать запроса, используйте переменные окружения GITHUB_USER и GITHUB_PASSWORD.

  4. Затем совершите коммит и нажмите как обычно или проверьте hub commit / hub push.

Для получения дополнительной помощи выполните: hub help.

См. Также: Импорт репозитория Git с помощью командной строки в GitHub.

11 голосов
/ 08 апреля 2011

Существует официальный github gem , который, я думаю, делает это.Я постараюсь добавить больше информации, когда узнаю, но я только сейчас открываю этот драгоценный камень, поэтому пока не знаю много.

ОБНОВЛЕНИЕ: После установки ключа API я могусоздать новое репо на github с помощью команды create, однако я не могу использовать команду create-from-local, которая должна взять текущее локальное репо и сделать соответствующий удаленный доступ на github.

$ gh create-from-local
=> error creating repository

Если у кого-то есть понимание этого, я хотел бы знать, что я делаю неправильно.Уже есть проблема , поданная .

ОБНОВЛЕНИЕ: в конце концов я все заработал.Я не совсем уверен, как воспроизвести проблему, но я только начал с нуля (удалил папку .git)

git init
git add .emacs
git commit -a -m "adding emacs"

Теперь эта строка создаст удаленное хранилище и даже подтолкнет к нему,но, к сожалению, я не думаю, что могу указать название репо, которое я хотел бы.Я хотел, чтобы он назывался «точечными файлами» на github, но гем gh просто использовал имя текущей папки, которое было «jason», так как я находился в своей домашней папке.(Я добавил тикет с просьбой о желаемом поведении)

gh create-from-local

Эта команда, с другой стороны, принимает аргумент для указания имени удаленного репо, но она предназначенадля запуска нового проекта с нуля, то есть после вызова этой команды вы получаете новое удаленное репо, которое отслеживает локальное репо во вновь созданной подпапке относительно вашей текущей позиции, оба с именем, указанным в качестве аргумента.

gh create dotfiles
9 голосов
/ 05 января 2015

Для быстрого создания удаленного репозитория с помощью Bash Shell

Трудно вводить полный код каждый раз, когда создается хранилище

curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}' git remote add origin git@github.com:USER/REPO.git git push origin master

Более простой подход:

  1. создать сценарий оболочки в каталоге, т.е. / home / USER_NAME / Desktop / my_scripts с именем githubscript.sh
  2. Измените и сохраните следующий код в файле githubscript.sh
#!bin/bash
curl -u 'YOUR_GITHUB_USER_NAME' https://api.github.com/user/repos -d "{\"name\":\"$1\"}";
git init;
git remote add origin git@github.com:YOUR_GITHUB_USER_NAME/$1.git;

N.B. Здесь $1 - это repository name, который передается как argument при вызове script Измените YOUR_GITHUB_USER_NAME перед сохранением скрипта.

  1. Установить необходимые разрешения для файла script chmod 755 githubscript.sh

  2. Включить каталог scripts в файл конфигурации среды. nano ~/.profile; export PATH="$PATH:$HOME/Desktop/my_scripts"

  3. Также установите псевдоним для запуска файла githubscript.sh. nano ~/.bashrc; alias githubrepo="bash githubscript.sh"

  4. Теперь перезагрузите файлы .bashrc и .profile в терминале. source ~/.bashrc ~/.profile;

  5. Теперь, чтобы создать новый репозиторий, т.е. demo: githubrepo demo;

4 голосов
/ 15 декабря 2013

Для пользователей с двухфакторной аутентификацией вы можете использовать решение Беннедича, но вам просто нужно добавить заголовок X-Github-OTP для первой команды. Замените CODE на код, полученный от поставщика двухфакторной аутентификации. Замените USER и REPO на имя пользователя и имя репозитория, как в его решении.

curl -u 'USER' -H "X-GitHub-OTP: CODE" -d '{"name":"REPO"}' https://api.github.com/user/repos
git remote add origin git@github.com:USER/REPO.git
git push origin master
4 голосов
/ 03 февраля 2017

Нет, Вы должны открыть браузер по крайней мере один раз, чтобы создать username на GitHub, после создания вы можете использовать GitHub API для создания хранилищ из командной строки, следуя Команда ниже:

curl -u 'github-username' https://api.github.com/user/repos -d '{"name":"repo-name"}'

Например:

curl -u 'arpitaggarwal' https://api.github.com/user/repos -d '{"name":"command-line-repo"}'
3 голосов
/ 08 марта 2015

Основано на другом ответе @Mechanical Snail, за исключением того, что без использования python, который я нашел дико излишним Добавьте это к вашему ~/.gitconfig:

[github]
    user = "your-name-here"
[alias]
    hub-new-repo = "!REPO=$(basename $PWD) GHUSER=$(git config --get github.user); curl -u $GHUSER https://api.github.com/user/repos -d {\\\"name\\\":\\\"$REPO\\\"} --fail; git remote add origin git@github.com:$GHUSER/$REPO.git; git push origin master"
...