Возможно ли создать удаленное репо на 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 ]

3 голосов
/ 24 апреля 2014

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

gem install githubrepo
githubrepo create *reponame*

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

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

Источник: Elikem Adadevoh

3 голосов
/ 27 мая 2013

Я создал псевдоним Git для этого, основываясь на ответе Беннедича . Добавьте следующее к вашему ~/.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.

3 голосов
/ 03 февраля 2013

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

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

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

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

2 голосов
/ 24 марта 2014

Что вам нужно, это концентратор . 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
2 голосов
/ 04 октября 2012

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

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

2 голосов
/ 07 января 2018

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

Эта функциональность поддерживается: https://github.com/chrissound/Human-Friendly-Commands по сути, именно этот скрипт:

#!/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 "$1" \
    '{"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
};
2 голосов
/ 19 декабря 2016

Для всех пользователей Python 2.7. *. Существует оболочка Python для Github API , которая в настоящее время находится в версии 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 объектные документы здесь .

0 голосов
/ 28 апреля 2014

вот мои начальные команды 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
0 голосов
/ 22 сентября 2017

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

Сначала необходимо создать Github 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.

...