394 votes

Est-il possible de créer une distance repo GitHub à partir de la CLI, sans ssh?

J'ai créé un nouveau dépôt Git local:

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

Est-il une commande git pour créer une nouvelle distance de pensions et de pousser mes s'engagent à GitHub à partir d'ici? Je sais que c'est pas une grosse affaire à juste tirer un navigateur et sur la tête de Créer un Nouveau Référentiel, mais si il y a une façon de le réaliser à partir de la CLI, je serais heureux.

J'ai lu une grande quantité d'articles, mais aucun que j'ai trouvé mention de la façon de créer une distance pensions à partir de la CLI à l'aide de commandes git. Tim Lucas bel article de la Configuration d'un nouveau dépôt git distant est le plus proche que j'ai trouvé, mais GitHub ne fournit pas d'accès shell.

346voto

bennedich Points 4745

Commandes CLI pour github API v3 (remplacer tous les BOUCHONS de mots-clés):

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

224voto

mipadi Points 135410

Vous pouvez créer un dépôt GitHub via la ligne de commande à l'aide de l'API GitHub. Découvrez le référentiel de l'API. Si vous faites défiler vers le bas d'environ un tiers du chemin, vous verrez une section intitulée "la Création et la Suppression des Référentiels" qui explique comment créer une pension de titres via l'API (à droite ci-dessus qui est une section qui explique comment faire un fork d'un repo avec l'API, trop). Évidemment, vous ne pouvez pas utiliser git pour ce faire, mais vous pouvez le faire via la ligne de commande avec un outil comme curl.

En dehors de l'API, il n'y a pas moyen de créer un repo GitHub via la ligne de commande. Comme vous l'avez remarqué, GitHub n'autorise pas l'accès au shell, etc., donc, en plus de l'API GitHub, la seule façon de créer un repo est par le biais de l'interface web de GitHub.

77voto

Nick Yeates Points 432

Cela peut être fait avec trois commandes:

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

(mis à jour pour v3 API Github)


Les explications de ces commandes...

Créer dépôt github

    curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
  • curl est une commande unix (ci-dessus fonctionne sur mac aussi) qui récupère et interagit avec les Url. Il est généralement déjà installé.
  • "-u" est une boucle paramètre qui spécifie le nom d'utilisateur et mot de passe à utiliser pour l'authentification du serveur.
    • Si vous venez de donner le nom de l'utilisateur (comme illustré dans l'exemple ci-dessus) curl demander un mot de passe.
    • Si vous ne voulez pas avoir à taper le mot de passe, voir githubs documentation de l'api sur l'Authentification
  • "-d" est une boucle paramètre qui permet d'envoyer des données POST à la demande
  • "nom" est le seul POST données requises; j'aime aussi inclure "description"
  • J'ai trouvé que c'était bon de citer toutes les données POST avec les guillemets simples ' '

Définir le pousser à

git remote add origin git@github.com:nyeates/projectname.git
  • ajouter la définition de l'emplacement et de l'existence de connecté (à distance) repo github
  • "origine" est un nom par défaut utilisé par git pour le cas où la source est venu de
    • techniquement, na pas venir à partir de github, mais maintenant, le dépôt github sera la source d'enregistrement
  • "git@github.com:nyeates" est une connexion ssh qui suppose que vous avez déjà configuré un de confiance des clés ssh avec github.

Poussent des pensions de github

git push origin master
  • pousser à l'origine de la télécommande (github) à partir de le maître de la succursale locale

54voto

Matt Tagg Points 524

Si vous installez defunkt est excellent Hub outil, puis cela devient aussi facile que de

git create

Dans les mots de l'auteur, "hub est une ligne de commande wrapper pour git qui vous rend meilleur sur GitHub."

11voto

Jason Marcell Points 965

Il y a un officiel github gem qui, je pense, fait ce. Je vais essayer d'ajouter plus d'information que j'ai appris, mais je suis juste en train de découvrir ce petit bijou, je ne sais donc pas encore beaucoup.

Mise à JOUR: Après le réglage de ma clé API, je suis en mesure de créer un nouveau repo github via l' create de commandement, mais je ne suis pas en mesure d'utiliser l' create-from-local de commande, qui est censé prendre les pensions de titres et de faire une distance correspondante sur github.

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

Si quelqu'un a un peu d'un aperçu sur ce, j'aimerais savoir ce que je fais mal. Il y a déjà un problème déposé.

Mise à JOUR: j'ai fini par obtenir que cela fonctionne. Je ne suis pas exactement sûr de la façon de reproduire le problème, mais je viens de commencer à partir de zéro (supprimé le .git dossier)

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

Maintenant, cette ligne permettra de créer de la distance repo et même le pousser à elle, mais malheureusement, je ne pense pas que je peux indiquer le nom de l'opération je le voudrais. Je voulais qu'il soit appelé "fichiers de configuration utilisateur" sur github, mais la gh gem juste utilisé le nom du dossier en cours, qui a été "jason" depuis que je suis dans mon dossier home. (J'ai ajouté un billet demandant le comportement souhaité)

gh create-from-local

Cette commande, d'autre part, accepte un argument pour spécifier le nom de la télécommande repo, mais c'est prévu pour le démarrage d'un nouveau projet à partir de zéro, c'est à dire après l'appel de cette commande, vous obtenez une nouvelle télécommande repo qui est suivi d'un local repo dans un nouveau sous-dossier par rapport à votre position actuelle, à la fois avec le nom spécifié comme argument.

gh create dotfiles

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X