Возможно ли создать удаленное репо на GitHub из CLI без открытия браузера?

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

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

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

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

Ответ 1

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

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

Ответ 2

Команды 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 [email protected]:USER/REPO.git
git push origin master

Ответ 3

Это можно сделать с помощью трех команд:

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

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


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

Создать github repo

    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 запросит пароль.
    • Если вы не хотите вводить пароль, см. документацию gitubs api на Authentication
  • "- d" - параметр curl, который позволяет отправлять данные POST с запросом
  • "имя" - это единственные данные POST; Мне нравится также включать "описание"
  • Я обнаружил, что было бы полезно процитировать все данные POST с одинарными кавычками ''

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

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

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

git push origin master
  • нажмите на исходный пульт (github) из основной локальной ветки

Ответ 4

Если вы установите defunkt отличный инструмент Hub, тогда это станет таким же простым, как

git create

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

Ответ 5

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

  • Установите Hub (GitHub).

    • OS X: brew install hub
    • Go: go get github.com/github/hub
    • в противном случае (Go):

      git clone https://github.com/github/hub.git && cd hub && ./script/build
      
  • Перейдите в свое репо или создайте пустой: mkdir foo && cd foo && git init.

  • Запуск: 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.

  • Затем зафиксируйте и нажмите как обычно или проверьте hub commit/hub push.

Для получения дополнительной справки выполните: hub help.

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

Ответ 6

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

UPDATE: после установки моего ключа 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"

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

gh create-from-local

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

gh create dotfiles

Ответ 7

Чтобы быстро создать удаленный репозиторий с помощью Bash оболочки

Весьма сложно вводить полный код каждый раз, когда создается репозиторий

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

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

  • создать оболочку script в каталоге, то есть /home/USER _NAME/Desktop/my_scripts с именем githubscript.sh
  • Измените и сохраните следующий код в файле 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 [email protected]:YOUR_GITHUB_USER_NAME/$1.git;

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

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

  2. Включите каталог сценариев в файл конфигурации среды. 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;

Ответ 8

Я написал отличный script для этого, называемый Gitter, используя API REST для GitHub и BitBucket:

https://github.com/dderiso/gitter

BitBucket:

gitter -c -r b -l javascript -n node_app

GitHub:

gitter -c -r g -l javascript -n node_app
  • -c= создать новое репо
  • -r= поставщик репо (g = GitHub, b = BitBucket)
  • -n= имя репо
  • -l= (необязательно) установить язык приложения в репо

Ответ 9

Я создал псевдоним Git, чтобы сделать это на основе ответа Bennedich. Добавьте к вашему ~/.gitconfig следующее:

[github]
    user = "your_github_username"
[alias]
    ; Creates a new Github repo under the account specified by github.user.
    ; The remote repo name is taken from the local repo directory name.
    ; Note: Referring to the current directory works because Git executes "!" shell commands in the repo root directory.
    hub-new-repo = "!python3 -c 'from subprocess import *; import os; from os.path import *; user = check_output([\"git\", \"config\", \"--get\", \"github.user\"]).decode(\"utf8\").strip(); repo = splitext(basename(os.getcwd()))[0]; check_call([\"curl\", \"-u\", user, \"https://api.github.com/user/repos\", \"-d\", \"{{\\\"name\\\": \\\"{0}\\\"}}\".format(repo), \"--fail\"]); check_call([\"git\", \"remote\", \"add\", \"origin\", \"[email protected]:{0}/{1}.git\".format(user, repo)]); check_call([\"git\", \"push\", \"origin\", \"master\"])'"

Чтобы использовать его, запустите

$ git hub-new-repo

из любого места в локальном репозитории и введите свой пароль Github при появлении запроса.

Ответ 10

Для пользователей с двухфакторной аутентификацией вы можете использовать решение bennedich, но вам просто нужно добавить заголовок 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 [email protected]:USER/REPO.git
git push origin master

Ответ 11

Основываясь на другом ответе @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 [email protected]:$GHUSER/$REPO.git; git push origin master"

Ответ 12

Для указания направления создания токена, перейдите здесь Это команда, которую вы наберете (на дату ответа) (заменить все CAPS):

curl -u 'YOUR_USERNAME' -d '{"scopes":["repo"],"note":"YOUR_NOTE"}' https://api.github.com/authorizations

После ввода пароля вы увидите следующее, которое содержит ваш токен.

{
  "app": {
    "name": "YOUR_NOTE (API)",
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api"
  },
  "note_url": null,
  "note": "YOUR_NOTE",
  "scopes": [
    "repo"
  ],
  "created_at": "2012-10-04T14:17:20Z",
  "token": "xxxxx",
  "updated_at": "2012-10-04T14:17:20Z",
  "id": xxxxx,
  "url": "https://api.github.com/authorizations/697577"
}

Вы можете отменить свой токен в любое время, перейдя здесь

Ответ 13

Вам нужно hub. Концентратор - это оболочка командной строки для git. Было сделано для интеграции с native git с использованием псевдонима. Он пытается обеспечить действия github в git, включая создание нового репозитория.

→  create a repo for a new project
$ git init
$ git add . && git commit -m "It begins."
$ git create -d "My new thing"
→  (creates a new project on GitHub with the name of current directory)
$ git push origin master

Ответ 14

Для рубистов:

gem install githubrepo
githubrepo create *reponame*

введите имя пользователя и pw в ответ на запрос

git remote add origin *ctrl v*
git push origin master

Источник: Эликем Ададево

Ответ 15

По соображениям репрезентации я не могу добавить это как комментарий (где лучше пойти с bennedich answer), но для Windows командной строки, вот правильный синтаксис:

curl -u YOUR_USERNAME https://api.github.com/user/repos -d "{\" name \ ":\" YOUR_REPO_NAME \ "}"

Это та же самая базовая форма, но вам нужно использовать двойные кавычки (") вместо одиночного и избегать двойных кавычек, отправленных в параметрах POST (после флага -d) с обратными косыми чертами. Я также удалил одинарные кавычки вокруг мое имя пользователя, но если ваше имя пользователя имело пробел (возможно?), ему, вероятно, понадобились бы двойные кавычки.

Ответ 16

Для всех пользователей Python 2.7. *. Существует оболочка Python вокруг API Github, который в настоящее время находится в версии 3, называемой GitPython. Просто установите с помощью easy_install PyGithub или pip install PyGithub.

from github import Github
g = Github(your-email-addr, your-passwd)
repo = g.get_user().user.create_repo("your-new-repos-name")

# Make use of Repository object (repo)

Объектные документы Repository здесь.

Ответ 17

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

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"}'

Ответ 18

Нашел это решение, которое мне понравилось: https://medium.com/@jakehasler/how-to-create-a-remote-git-repo-from-the-command-line-2d6857f49564

Сначала вам нужно создать Gitub Personal Access Token

Откройте ваш ~/.bash_profile или ~/.bashrc в своем любимом текстовом редакторе. Добавьте следующую строку вверху вашего файла, где остальные переменные экспорта:

export GITHUB_API_TOKEN=<your-token-here>

Где-то ниже, другими вашими функциями bash, вы можете вставить что-то похожее на следующее:

function new-git() {
    curl -X POST https://api.github.com/user/repos -u <your-username>:$GITHUB_API_TOKEN -d '{"name":"'$1'"}'
}

Теперь, когда вы создаете новый проект, вы можете запустить команду $ new-git awesome-repo, чтобы создать новый публичный удаленный репозиторий в вашей учетной записи пользователя Github.

Ответ 19

Вот мои первоначальные команды git (возможно, это действие происходит в C:/Documents and Settings/your_username/):

mkdir ~/Hello-World
# Creates a directory for your project called "Hello-World" in your user directory
cd ~/Hello-World
# Changes the current working directory to your newly created directory
touch blabla.html
# create a file, named blabla.html
git init
# Sets up the necessary Git files
git add blabla.html
# Stages your blabla.html file, adding it to the list of files to be committed
git commit -m 'first committttt'
# Commits your files, adding the message 
git remote add origin https://github.com/username/Hello-World.git
# Creates a remote named "origin" pointing at your GitHub repository
git push -u origin master
# Sends your commits in the "master" branch to GitHub

Ответ 20

Недавно я узнал о create-github-repo. Из файла readme:

Установка:

$ npm i -g create-github-repo

Использование:

$ export CREATE_GITHUB_REPO_TOKEN=<access_token>
$ create-github-repo --name "My coolest repo yet!"

Или:

$ create-github-repo <access_token> --name "My coolest repo yet!"

Ответ 21

создать новый репозиторий в командной строке

echo "# <RepositoryName>" >> README.md

git init

git add README.md

git commit -m "first commit"

git remote add origin https://github.com/**<gituserID>/<RepositoryName>**.git

git push -u origin master

нажмите существующий репозиторий из командной строки

git remote add origin https://github.com/**<gituserID>/<RepositoryName>**.git

git push -u origin master