J'ai créé un nouveau référentiel Git local:
~$ mkdir projectname
~$ cd projectname
~$ git init
~$ touch file1
~$ git add file1
~$ git commit -m 'first commit'
Existe-t-il une commande git permettant de créer un nouveau repo distant et d'envoyer mon commit à GitHub à partir d'ici? Je sais que ce n'est pas grave de lancer un navigateur et de se diriger vers créer un nouveau référentiel , mais s'il existe un moyen de réaliser cela à partir de la CLI, je serais heureux.
J'ai lu une grande quantité d'articles, mais aucun que j'ai trouvé ne mentionne comment créer un dépôt distant à partir de la CLI à l'aide de commandes git. L'article de Tim Lucas dans Nice Configuration d'un nouveau référentiel git distant est le plus proche que j'ai trouvé, mais GitHub ne fournit pas d'accès à Shell .
Vous pouvez créer un référentiel GitHub via la ligne de commande à l'aide de l'API GitHub. Découvrez le API du référentiel . Si vous faites défiler environ un tiers du chemin, vous verrez une section intitulée "Créer" qui explique comment créer un référentiel via l'API (à droite ci-dessus, une section qui explique comment un repo avec l'API aussi). Évidemment, vous ne pouvez pas utiliser git
pour le faire, mais vous pouvez le faire via la ligne de commande avec un outil tel que curl
.
En dehors de l'API, il est impossible de créer un dépôt sur GitHub via la ligne de commande. Comme vous l'avez noté, GitHub n'autorise pas l'accès à Shell, etc., à part l'API GitHub, le seul moyen de créer un référentiel consiste à utiliser l'interface Web de GitHub.
Commandes CLI pour github API v3 (remplace tous les mots clés 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
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 [email protected]:nyeates/projectname.git
git Push Origin master
(mis à jour pour l'API vith Github)
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
Étapes simples (en utilisant git
+ hub
=> GitHub ):
Accédez à votre dépôt ou créez-en un vide: mkdir foo && cd foo && git init
.
Run: hub create
, il vous posera pour la première fois des informations d'identification GitHub.
Utilisation: hub create [-p] [-d DESCRIPTION] [-h HOMEPAGE] [NAME]
Exemple: hub create -d Description -h example.com org_name/foo_repo
Hub demandera le nom d'utilisateur et le mot de passe GitHub la première fois qu'il aura besoin d'accéder à l'API et l'échangera contre un jeton
OAuth
qu'il enregistrera dans~/.config/hub
.Pour nommer explicitement le nouveau référentiel, passez
NAME
, éventuellement sous la formeORGANIZATION/NAME
à créer dans une organisation dont vous êtes membre.Avec
-p
, créez un référentiel privé et avec-d
et-h
, définissez la description et la page d'accueil du référentielURL
, respectivement.Pour éviter d’être invité, utilisez les variables d’environnement
GITHUB_USER
etGITHUB_PASSWORD
.
Puis validez et appuyez comme d'habitude ou vérifiez hub commit
/hub Push
.
Pour plus d’aide, lancez: hub help
.
Voir aussi: Importation d'un référentiel Git à l'aide de la ligne de commande sur GitHub.
Il y a un github gem officiel qui, je pense, fait cela. J'essaierai d'ajouter plus d'informations au fur et à mesure que j'apprendrai, mais je viens tout juste de découvrir ce petit bijou, alors je ne sais pas grand chose pour le moment.
UPDATE: Après avoir défini ma clé d'API, je peux créer un nouveau référentiel sur github via la commande create
, mais je ne peux pas utiliser la commande create-from-local
, qui est supposée utiliser le fichier local en cours. repo et faire une télécommande correspondante sur github.
$ gh create-from-local
=> error creating repository
Si quelqu'un a des idées à ce sujet, j'aimerais savoir ce que je fais de travers. Il y a déjà un numéro classé .
UPDATE: J'ai finalement réussi à faire fonctionner cela. Je ne sais pas exactement comment reproduire le problème, mais je viens de recommencer à zéro (j'ai supprimé le dossier .git).
git init
git add .emacs
git commit -a -m "adding emacs"
Maintenant, cette ligne va créer le repo distant et même le Push, mais malheureusement, je ne pense pas pouvoir spécifier le nom du repo que je voudrais. Je voulais que cela s'appelle "dotfiles" sur github, mais la gemme gh n'utilisait que le nom du dossier actuel, qui était "jason" puisque j'étais dans mon dossier personnel. (J'ai ajouté n ticket demandant le comportement souhaité)
gh create-from-local
En revanche, cette commande accepte un argument spécifiant le nom du référentiel distant, mais elle est conçue pour démarrer un nouveau projet à partir de zéro, c'est-à-dire qu'après l'appel de cette commande, vous obtenez un nouveau référentiel distant suivi d'un référentiel local. dans un sous-dossier nouvellement créé par rapport à votre position actuelle, les deux avec le nom spécifié comme argument.
gh create dotfiles
Il est difficile de taper le code complet à chaque fois qu'un référentiel doit être créé.
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
Une approche plus simple consiste à:
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;
NB Ici $1
est le repository name
qui est passé en tant que argument
lors de l'appel de la script
Modifiez YOUR_GITHUB_USER_NAME
avant de sauvegarder le script.
Définissez les autorisations requises sur le fichier script
chmod 755 githubscript.sh
Incluez le répertoire de scripts dans le fichier de configuration de l'environnement. nano ~/.profile; export PATH="$PATH:$HOME/Desktop/my_scripts"
Définissez également un alias pour exécuter le fichier githubscript.sh. nano ~/.bashrc; alias githubrepo="bash githubscript.sh"
Rechargez maintenant les fichiers .bashrc
et .profile
dans le terminal. source ~/.bashrc ~/.profile;
Maintenant, créez un nouveau référentiel c'est-à-dire demo
: githubrepo demo;
Nope, vous devez ouvrir un navigateur au moins une fois pour créer votre username
sur GitHub. Une fois créé, vous pouvez utiliser GitHub API pour créer des référentiels à partir de la ligne de commande, en suivant la commande ci-dessous:
curl -u 'github-username' https://api.github.com/user/repos -d '{"name":"repo-name"}'
Par exemple:
curl -u 'arpitaggarwal' https://api.github.com/user/repos -d '{"name":"command-line-repo"}'
Pour les utilisateurs disposant d'une authentification à deux facteurs, vous pouvez utiliser la solution bennedich, mais il vous suffit d'ajouter l'en-tête X-Github-OTP pour la première commande. Remplacez CODE par le code obtenu auprès du fournisseur d'authentification à deux facteurs. Remplacez USER et REPO par le nom d'utilisateur et le nom du référentiel, comme vous le feriez dans sa solution.
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
Pour les rubis:
gem install githubrepo
githubrepo create *reponame*
entrez le nom d'utilisateur et le mot de passe comme demandé
git remote add Origin *ctrl v*
git Push Origin master
Source: Elikem Adadevoh
J'ai écrit un script astucieux pour cela appelé Gitter en utilisant les API REST de GitHub et 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
= créer un nouveau dépôt-r
= fournisseur de repo (g = GitHub, b = BitBucket)-n
= nommer le référentiel-l
= (facultatif) définir la langue de l'application dans le référentielBasé sur l'autre réponse de @Mechanical Snail, sauf sans l'utilisation de python, ce que j'ai trouvé excessivement excessif. Ajoutez ceci à votre ~/.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"
J'ai créé un alias Git pour ce faire, basé sur réponse de Bennedich . Ajoutez ce qui suit à votre ~/.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\", \"[email protected]:{0}/{1}.git\".format(user, repo)]); check_call([\"git\", \"Push\", \"Origin\", \"master\"])'"
Pour l'utiliser, lancez
$ git hub-new-repo
n'importe où dans le référentiel local, et entrez votre mot de passe Github lorsque vous y êtes invité.
Pour obtenir des instructions sur la création d'un jeton, allez here C’est la commande que vous allez taper (à compter de la date de cette réponse. (Remplacez tous les mots clés CAPS):
curl -u 'YOUR_USERNAME' -d '{"scopes":["repo"],"note":"YOUR_NOTE"}' https://api.github.com/authorizations
Une fois que vous avez entré votre mot de passe, vous verrez ce qui suit contenant votre jeton.
{
"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"
}
Vous pouvez révoquer votre jeton à tout moment en allant ici
Pour tous les Python 2.7. * Utilisateurs. Il existe un wrapper Python autour de API Github actuellement en version 3, appelé GitPython . Installez simplement en utilisant easy_install PyGithub
ou 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)
Les documents d'objet Repository
sont ici .
Pour des raisons de représentation, je ne peux pas ajouter ceci sous forme de commentaire (où il serait préférable d'aller avec réponse de bennedich ), mais pour la ligne de commande Windows, voici la syntaxe correcte:
curl -u YOUR_USERNAME https://api.github.com/user/repos -d "{\" name\": \" YOUR_REPO_NAME\"}"
C'est la même forme de base, mais vous devez utiliser des guillemets doubles (") au lieu de simples, et échapper les guillemets doubles envoyés dans les paramètres POST (après l'indicateur -d) avec des barres obliques inverses. J'ai également supprimé les guillemets. guillemets simples autour de mon nom d'utilisateur, mais si votre nom d'utilisateur avait un espace (possible?), il aurait probablement besoin de guillemets doubles.
Ce dont vous avez besoin est hub . Hub est un wrapper en ligne de commande pour git. Il a été fait pour s’intégrer avec git natif en utilisant alias. Il essaie de fournir des actions github dans git, y compris la création d'un nouveau référentiel.
→ 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
Disclamier: Je suis l'auteur du projet open source
Cette fonctionnalité est supportée par: https://github.com/chrissound/Human-Friendly-Commands c'est essentiellement ce script:
#!/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
};
J'ai trouvé cette solution qui me plaisait: https://medium.com/@jakehasler/how-to-create-a-remote-git-repo-from-the-command-line-2d6857f49564
Vous devez d’abord créer un jeton d’accès personnel Github
Ouvrez votre ~/.bash_profile ou ~/.bashrc dans votre éditeur de texte préféré. Ajoutez la ligne suivante vers le haut de votre fichier, où se trouvent les autres variables exportées:
export GITHUB_API_TOKEN=<your-token-here>
Quelque part ci-dessous, par vos autres fonctions bash, vous pouvez coller quelque chose de similaire au suivant:
function new-git() {
curl -X POST https://api.github.com/user/repos -u <your-username>:$GITHUB_API_TOKEN -d '{"name":"'$1'"}'
}
Maintenant, chaque fois que vous créez un nouveau projet, vous pouvez exécuter la commande $ new-git awesome-repo
pour créer un nouveau référentiel public distant sur votre compte utilisateur Github.