it-swarm.com.de

Ist es möglich, ein Remote-Repo auf GitHub über die CLI zu erstellen, ohne den Browser zu öffnen?

Ich habe ein neues lokales Git-Repository erstellt:

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

Gibt es irgendeinen git-Befehl, um ein neues remote repo zu erstellen und mein Commit von hier an GitHub zu senden? Ich weiß, dass es das ist Es ist keine große Sache, einfach einen Browser zu starten und zu Create a New Repository überzugehen, aber wenn es einen Weg gibt, dies über die CLI zu erreichen, würde ich mich freuen.

Ich habe eine große Anzahl von Artikeln gelesen, aber keiner, den ich gefunden habe, erwähnt, wie man ein Remote-Repo über die CLI mit git-Befehlen erstellt. Tim Lucas 'netter Artikel Einrichten eines neuen entfernten Git-Repository ist der nächste, den ich gefunden habe, aber GitHub bietet keinen Shell-Zugriff.

331
anddoutoi

Sie können ein GitHub-Repo über die Befehlszeile mit der GitHub-API erstellen. Überprüfen Sie die Repository-API . Wenn Sie ungefähr ein Drittel des Weges nach unten scrollen, sehen Sie einen Abschnitt mit dem Titel "Create" , in dem erläutert wird, wie Sie ein Repo über die API erstellen (rechts darüber befindet sich ein Abschnitt, in dem das Verzweigen erläutert wird auch ein Repo mit der API). Natürlich können Sie hierfür nicht git verwenden, aber Sie können dies über die Befehlszeile mit einem Tool wie curl tun.

Außerhalb der API gibt es keine Möglichkeit, über die Befehlszeile ein Repo auf GitHub zu erstellen. Wie Sie bereits bemerkt haben, lässt GitHub keinen Shell-Zugriff usw. zu. Abgesehen von der GitHub-API kann ein Repo nur über die GitHub-Weboberfläche erstellt werden.

207
mipadi

CLI-Befehle für die github API v3 (ersetzen Sie alle CAPS-Schlüsselwörter):

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
312
bennedich

Dies kann mit drei Befehlen erfolgen:

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

(aktualisiert für die v3 Github API)


Erklärung dieser Befehle ...

Erstellen Sie ein Github-Repo

    curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
  • curl ist ein Unix-Befehl (funktioniert auch auf dem Mac), der URLs abruft und mit ihnen interagiert. Es ist in der Regel bereits installiert.
  • "-u" ist ein Curl-Parameter, der den Benutzernamen und das Kennwort für die Serverauthentifizierung angibt.
    • Wenn Sie nur den Benutzernamen eingeben (wie im obigen Beispiel gezeigt), fordert curl zur Eingabe eines Kennworts auf.
    • Wenn Sie das Kennwort nicht eingeben müssen, lesen Sie die Dokumentation zu githubs api unter Authentifizierung
  • "-d" ist ein Curl-Parameter, mit dem Sie POST Daten mit der Anfrage senden können.
  • "name" ist die einzige POST Daten erforderlich; ich möchte auch "description" enthalten
  • Ich fand es gut, alle POST Daten mit einfachen Anführungszeichen '' zu zitieren.

Definieren Sie, wohin Sie pushen möchten

git remote add Origin [email protected]:nyeates/projectname.git
  • hinzufügen einer Definition für die Position und das Vorhandensein eines verbundenen (entfernten) Repos auf dem Github
  • "Origin" ist ein Standardname, der von Git verwendet wird, wenn die Quelle von Stammt.
    • technisch gesehen kam es nicht von Github, aber jetzt wird das Github-Repo die Quelle der Aufzeichnung sein
  • "[email protected]: nyeates" ist eine ssh-Verbindung, bei der davon ausgegangen wird, dass Sie bereits ein vertrauenswürdiges ssh-Schlüsselpaar mit github eingerichtet haben.

Schieben Sie das lokale Repo auf den Github

git Push Origin master
  • Push auf die Origin-Fernbedienung (Github) von der lokalen Hauptniederlassung
67
Nay

Wenn Sie defunkt's excellent Hub installieren, wird dies so einfach wie

git create

Nach den Worten des Autors ist " hub ein Befehlszeilen-Wrapper für Git, der Sie bei GitHub besser macht. "

50
cavalcade

Einfache Schritte (mit git + hub => GitHub ):

  1. Installieren Sie Hub ( GitHub ).

    • OS X: brew install hub
    • mit Go : go get github.com/github/hub
    • ansonsten (auch mit Go ):

      git clone https://github.com/github/hub.git && cd hub && ./script/build
      
  2. Gehe in dein Repo oder erstelle ein leeres: mkdir foo && cd foo && git init.

  3. Führen Sie Folgendes aus: hub create, Sie werden zum ersten Mal nach den GitHub-Anmeldeinformationen gefragt.

    Verwendung: hub create [-p] [-d DESCRIPTION] [-h HOMEPAGE] [NAME]

    Beispiel: hub create -d Description -h example.com org_name/foo_repo

    Hub fordert Sie auf, den Benutzernamen und das Kennwort für GitHub einzugeben, wenn Sie zum ersten Mal auf die API zugreifen und diese gegen ein OAuth Token austauschen müssen, das in ~/.config/hub Gespeichert wird.

    Um das neue Repository explizit zu benennen, übergeben Sie es in NAME, optional in ORGANIZATION/NAME - Form, um es unter einer Organisation zu erstellen, der Sie angehören.

    Erstellen Sie mit -p Ein privates Repository und legen Sie mit -d Und -h Die Beschreibung des Repositorys und die Homepage URL fest.

    Verwenden Sie die Umgebungsvariablen GITHUB_USER Und GITHUB_PASSWORD, Um eine Aufforderung zu vermeiden.

  4. Dann festschreiben und wie gewohnt pushen oder hub commit/hub Push Prüfen.

Führen Sie für weitere Hilfe Folgendes aus: hub help.

Siehe auch: Git-Repository über die Befehlszeile importieren at GitHub.

15
kenorb

Es gibt ein offizielles Github-Juwel , das dies meiner Meinung nach tut. Ich werde versuchen, weitere Informationen hinzuzufügen, während ich lerne, aber ich entdecke dieses Juwel gerade erst, daher weiß ich noch nicht viel.

UPDATE: Nachdem ich meinen API-Schlüssel gesetzt habe, kann ich über den Befehl create ein neues Repo auf Github erstellen. Ich kann jedoch nicht den Befehl create-from-local Verwenden, der den Befehl übernehmen soll aktuelles lokales repo und einen entsprechenden remote out auf github machen.

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

Wenn jemand etwas darüber weiß, würde ich gerne wissen, was ich falsch mache. Es gibt bereits ein Problem abgelegt .

UPDATE: Ich habe das irgendwann zum Laufen gebracht. Ich bin mir nicht ganz sicher, wie ich das Problem reproduzieren soll, aber ich habe gerade von vorne angefangen (den .git-Ordner gelöscht)

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

Jetzt wird diese Zeile das Remote-Repo erstellen und sogar darauf pushen, aber ich glaube leider nicht, dass ich den Namen des Repos angeben kann, den ich haben möchte. Ich wollte, dass es auf dem Github "dotfiles" heißt, aber der Gh-Edelstein verwendete nur den Namen des aktuellen Ordners, nämlich "jason", da ich mich in meinem Ausgangsordner befand. (Ich fügte hinzu ein Ticket nach dem gewünschten Verhalten fragen)

gh create-from-local

Dieser Befehl akzeptiert andererseits ein Argument, um den Namen des Remote-Repos anzugeben, ist jedoch dafür gedacht, ein neues Projekt von Grund auf neu zu starten, dh nach dem Aufrufen dieses Befehls erhalten Sie ein neues Remote-Repo, das ein lokales Repo verfolgt in einem neu erstellten Unterordner relativ zu Ihrer aktuellen Position, beide mit dem als Argument angegebenen Namen.

gh create dotfiles
11
Jason Marcell

So erstellen Sie das Remote-Repository schnell mithilfe einer Bash-Shell

Es ist mühsam, den vollständigen Code jedes Mal einzugeben, wenn ein Repository erstellt werden soll

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

Ein einfacherer Ansatz ist:

  1. erstellen Sie ein Shell-Skript in einem Verzeichnis, z. B./home/USER_NAME/Desktop/my_scripts mit dem Namen githubscript.sh
  2. Ändern und speichern Sie den folgenden Code unter githubscript.sh Datei
#!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. Hier $1 ist der repository name, das beim Aufrufen der argument als script übergeben wird Ändern YOUR_GITHUB_USER_NAME vor dem Speichern des Skripts.

  1. Festlegen der erforderlichen Berechtigungen für die script -Datei chmod 755 githubscript.sh

  2. Fügen Sie das Skriptverzeichnis in die Umgebungskonfigurationsdatei ein. nano ~/.profile; export PATH="$PATH:$HOME/Desktop/my_scripts"

  3. Legen Sie außerdem einen Alias ​​für die Ausführung der Datei githubscript.sh fest. nano ~/.bashrc; alias githubrepo="bash githubscript.sh"

  4. Laden Sie nun das .bashrc und .profile Dateien im Terminal. source ~/.bashrc ~/.profile;

  5. Erstellen Sie nun ein neues Repository, d. H. demo: githubrepo demo;

9

Nein, Sie müssen mindestens einmal einen Browser öffnen, um Ihr username auf GitHub zu erstellen. Sobald Sie es erstellt haben, können Sie GitHub API Um Repositorys über die Befehlszeile zu erstellen, folgen Sie dem folgenden Befehl:

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

Zum Beispiel:

curl -u 'arpitaggarwal' https://api.github.com/user/repos -d '{"name":"command-line-repo"}'
4
Arpit

Für Benutzer mit Zwei-Faktor-Authentifizierung können Sie die Lösung von bennedich verwenden, müssen jedoch nur den X-Github-OTP-Header für den ersten Befehl hinzufügen. Ersetzen Sie CODE durch den Code, den Sie vom Zwei-Faktor-Authentifizierungsanbieter erhalten. Ersetzen Sie USER und REPO durch den Benutzernamen und den Namen des Repositorys, wie Sie es in seiner Lösung tun würden.

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
4
user886596

Für Rubyisten:

gem install githubrepo
githubrepo create *reponame*

geben Sie den Benutzernamen und pw ein, wenn Sie dazu aufgefordert werden

git remote add Origin *ctrl v*
git Push Origin master

Quelle: Elikem Adadevoh

3
Benjamin Dunphy

Ich habe ein geschicktes Skript dafür geschrieben, das Gitter heißt und die REST APIs für GitHub und BitBucket verwendet:

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 = neues Repo erstellen
  • -r = Repo-Provider (g = GitHub, b = BitBucket)
  • -n = Repo benennen
  • -l = (optional) Setzt die Sprache der App im Repo
3
D.Deriso

Basierend auf der anderen Antwort von @Mechanical Snail, außer ohne die Verwendung von Python, die ich als wild übertrieben empfand. Fügen Sie dies zu Ihrem ~/.gitconfig Hinzu:

[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"
3
robru

Ich habe dazu einen Git-Alias ​​erstellt, basierend auf Bennedichs Antwort . Fügen Sie Ihrem ~/.gitconfig Folgendes hinzu:

[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\", \"[email protected]:{0}/{1}.git\".format(user, repo)]); check_call([\"git\", \"Push\", \"Origin\", \"master\"])'"

Um es zu benutzen, laufen Sie

$ git hub-new-repo

von überall im lokalen Repository aus und geben Sie Ihr Github-Passwort ein, wenn Sie dazu aufgefordert werden.

3

Anweisungen zum Erstellen eines Tokens finden Sie unter hier Dies ist der Befehl, den Sie eingeben (ab dem Datum dieser Antwort. (Ersetzen Sie alle CAPS-Schlüsselwörter):

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

Sobald Sie Ihr Passwort eingegeben haben, sehen Sie Folgendes, das Ihren Token enthält.

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

Sie können Ihr Token jederzeit widerrufen, indem Sie hier

2
reubano

Für alle Python 2.7. * Benutzer. Es gibt einen Python Wrapper um die Github API , die sich derzeit in Version 3 befindet. genannt GitPython . Einfach installieren mit easy_install PyGithub oder 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)

Die Repository Objektdokumente sind hier .

2
quine

Aus Gründen der Wiederholung kann ich dies nicht als Kommentar hinzufügen (wo es besser wäre mit Bennedichs Antwort ), aber für die Windows-Befehlszeile ist hier die richtige Syntax:

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

Es ist die gleiche Grundform, aber Sie müssen doppelte Anführungszeichen (") anstelle von einfachen verwenden und die doppelten Anführungszeichen, die in den POST Parameter (nach dem -d Flag) mit Backslashes gesendet werden, umgehen entfernte auch die einfachen Anführungszeichen um meinen Benutzernamen, aber wenn Ihr Benutzername ein Leerzeichen hätte (möglich?), würde er wahrscheinlich doppelte Anführungszeichen benötigen.

2
traycerb

Was Sie brauchen, ist Nabe . Hub ist ein Befehlszeilen-Wrapper für Git. Es wurde für die Integration in native Git unter Verwendung eines Alias ​​erstellt. Es wird versucht, github-Aktionen in git bereitzustellen, einschließlich der Erstellung eines neuen Repositorys.

→  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
cnvzmxcvmcx

Disclamier: Ich bin der Autor des Open Source Projekts

Diese Funktionalität wird unterstützt von: https://github.com/chrissound/Human-Friendly-Commands im Wesentlichen handelt es sich um dieses Skript:

#!/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 [email protected]:"$GITHUB_USER"/"$projName".git
  git Push Origin master
};
2

Ich habe diese Lösung gefunden, die mir gefallen hat: https://medium.com/@jakehasler/how-to-create-a-remote-git-repo-from-the-command-line-2d6857f49564

Sie müssen zuerst ein Github Personal Access Token erstellen

Öffnen Sie Ihr ~/.bash_profile oder ~/.bashrc in Ihrem bevorzugten Texteditor. Fügen Sie die folgende Zeile am oberen Rand Ihrer Datei hinzu, an der sich die restlichen exportierten Variablen befinden:

export GITHUB_API_TOKEN=<your-token-here>

Irgendwo unten können Sie mit Ihren anderen Bash-Funktionen etwas Ähnliches wie das Folgende einfügen:

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

Wenn Sie jetzt ein neues Projekt erstellen, können Sie den Befehl $ new-git awesome-repo, um ein neues öffentliches Remote-Repository in Ihrem Github-Benutzerkonto zu erstellen.

0
Joshua Dance