Можно ли создать удаленное РЕПО на 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 не предоставляет доступ к оболочке.

22 ответов


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

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


команды 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

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

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 запросит пароль.
    • если вы не хотите вводить пароль, см. документацию по api githubs на проверка подлинности
  • " - d " - это параметр curl, который позволяет отправлять почтовые данные с запросом
  • " имя "- это единственные необходимые данные 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
  • нажмите на origin remote (github) из главной локальной ветви

при установке defunkt это отлично Hub инструмент, то это становится так же просто, как

git create

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


простые шаги (с помощью git + hub =>GitHub):

  1. установить хаб (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
      
  2. перейти к РЕПО или создать пустой: mkdir foo && cd foo && git init.

  3. Run: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 set описание репозитория и страницы URL, соответственно.

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

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

для получения дополнительной помощи, работать: hub help.

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


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

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

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

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

UPDATE: я в конечном итоге получил это на работу. Я не совсем уверен, как воссоздать проблему, но я только начал с нуля (удалил .папка git)

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

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

gh create-from-local

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

gh create dotfiles

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

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

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\":\"\"}";
git init;
git remote add origin git@github.com:YOUR_GITHUB_USER_NAME/.git;

Б. Н. здесь - это repository name это передается как argument при использовании script Изменить YOUR_GITHUB_USER_NAME перед сохранением скрипта.

  1. установите необходимые разрешения на 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;


для пользователей с двухфакторной аутентификацией вы можете использовать решение беннедича, но вам просто нужно добавить заголовок X-Github-OTP для первой команды. Замените код кодом, который вы получаете от поставщика двухфакторной аутентификации. Замените 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

Я написал отличный сценарий для этого называется Gitter использование остальных API для 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 = (необязательно) установите язык приложения в репо

Я создал псевдоним Git для этого, основанный на Bennedich это!--5-->. Добавьте к вашему ~/.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's 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\", \"git@github.com:{0}/{1}.git\".format(user, repo)]); check_call([\"git\", \"push\", \"origin\", \"master\"])'"

, чтобы использовать его, выполните команду

$ git hub-new-repo

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


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

gem install githubrepo
githubrepo create *reponame*

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

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

источник: Adadevoh Elikem


основываясь на другом ответе @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"

Неа, вы должны открыть браузер по крайней мере один раз, чтобы создать свой 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"}'

для указаний по созданию токена перейдите здесь это команда ввода (по состоянию на дату этого ответа. (заменить все ключевые слова 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"
}

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


что нужно hub. Hub-это оболочка командной строки для git. Он был сделан для интеграции с родным 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

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

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

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


для всех 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 объект документы здесь.


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

сначала вам нужно создать GitHub Персональный Токен Доступа

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

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

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


Disclamier: я автор проекта с открытым исходным кодом

эта функция поддерживается: https://github.com/chrissound/LinuxVerboseCommandLib по сути это такой скрипт:

#!/usr/bin/env bash

# Create a repo named by the current directory
# Accepts 1 STRING parameter for the repo description
# Depends on bin: jq
# Depends on env: GITHUB_USER, GITHUB_API_TOKEN
github_createRepo() {
  projName="$(basename "$PWD")"
  json=$(jq -n \
    --arg name "$projName" \
    --arg description "" \
    '{"name":$name, "description":$description}')

  curl -u "$GITHUB_USER":"$GITHUB_API_TOKEN" https://api.github.com/user/repos -d "$json"
  git init
  git remote add origin git@github.com:"$GITHUB_USER"/"$projName".git
  git push origin master
};

вот мои начальные команды 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

Я недавно узнал о 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!"

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

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