origin - ¿Es posible crear un repositorio remoto en GitHub desde la CLI sin abrir el navegador?
git push origin master (22)
Crear rápidamente el repositorio remoto utilizando un shell Bash
Es engorroso escribir el código completo cada vez que se crea un repositorio
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
Un enfoque más fácil es:
- cree un script de shell en un directorio, es decir, / home / USER_NAME / Desktop / my_scripts llamado
githubscript.sh
- Modifique y guarde el siguiente código en el archivo
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: $1
es el repository name
del repository name
que se pasa como argument
al invocar el script
Cambie YOUR_GITHUB_USER_NAME
antes de guardar el script.
Establezca los permisos necesarios para el archivo de
script
chmod 755 githubscript.sh
Incluir el directorio de scripts en el archivo de configuración del entorno.
nano ~/.profile; export PATH="$PATH:$HOME/Desktop/my_scripts"
También establece un alias para ejecutar el archivo githubscript.sh.
nano ~/.bashrc; alias githubrepo="bash githubscript.sh"
Ahora vuelva a cargar los archivos
.bashrc
y.profile
en el terminal.source ~/.bashrc ~/.profile;
Ahora para crear un nuevo repositorio, es decir,
demo
:githubrepo demo;
Creé un nuevo repositorio local de Git:
~$ mkdir projectname
~$ cd projectname
~$ git init
~$ touch file1
~$ git add file1
~$ git commit -m ''first commit''
¿Hay algún comando git para crear un nuevo repositorio remoto y enviar mi compromiso a GitHub desde aquí? Sé que no es gran cosa simplemente encender un navegador y dirigirse a Crear un nuevo repositorio , pero si hubiera una forma de lograrlo desde el CLI, me sentiría feliz.
Leí una gran cantidad de artículos, pero ninguno de los que encontré menciona cómo crear un repositorio remoto desde la CLI usando los comandos git. El buen artículo de Tim Lucas La configuración de un nuevo repositorio de git remoto es lo más cercano que he encontrado, pero GitHub no proporciona acceso a la shell .
Aquí están mis comandos iniciales de git (posiblemente, esta acción tenga lugar en 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
Basado en la otra respuesta de @Mechanical Snail, excepto sin el uso de python, que encontré que era tremendamente excesivo. Agrega esto a tu ~/.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"
Comandos CLI para github API v3 (reemplazar todas las palabras clave de 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
Encontré esta solución que me gustó: https://medium.com/@jakehasler/how-to-create-a-remote-git-repo-from-the-command-line-2d6857f49564
Primero necesitas crear un token de acceso personal de Github
Abre tu ~ / .bash_profile o ~ / .bashrc en tu editor de texto favorito. Agregue la siguiente línea cerca de la parte superior de su archivo, donde el resto de las variables de edición de exportación son:
export GITHUB_API_TOKEN=<your-token-here>
En algún lugar a continuación, mediante sus otras funciones de bash, puede pegar algo similar a lo siguiente:
function new-git() {
curl -X POST https://api.github.com/user/repos -u <your-username>:$GITHUB_API_TOKEN -d ''{"name":"''$1''"}''
}
Ahora, cuando esté creando un nuevo proyecto, puede ejecutar el comando $ new-git awesome-repo
para crear un nuevo repositorio remoto público en su cuenta de usuario de Github.
Escribí un script ingenioso para este llamado Gitter usando las API REST para GitHub y 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
= crear nuevo repositorio -
-r
= proveedor de repositorio (g = GitHub, b = BitBucket) -
-n
= nombrar el repositorio -
-l
= (opcional) establece el idioma de la aplicación en el repositorio
Esto se puede hacer con tres comandos:
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
(actualizado para v3 Github API)
Explicación de estos comandos ...
Crear repositorio github
curl -u ''nyeates'' https://api.github.com/user/repos -d ''{"name":"projectname","description":"This project is a test"}''
- curl es un comando de Unix (el anterior también funciona en mac) que recupera e interactúa con las URL. Normalmente ya está instalado.
- "-u" es un parámetro de enrollamiento que especifica el nombre de usuario y la contraseña a usar para la autenticación del servidor.
- Si acaba de dar el nombre de usuario (como se muestra en el ejemplo anterior), curl solicitará una contraseña.
- Si no desea tener que escribir la contraseña, consulte la documentación de githubs api en Authentication
- "-d" es un parámetro de rizo que le permite enviar datos POST con la solicitud
- Usted está enviando datos POST en formato API definido por githubs
- "nombre" es la única información POST requerida; Me gusta incluir también "descripción"
- Descubrí que era bueno citar todos los datos POST con comillas simples "
Definir dónde presionar para
git remote add origin [email protected]:nyeates/projectname.git
- agregue definición para la ubicación y la existencia del repositorio conectado (remoto) en github
- "origen" es un nombre predeterminado usado por git para el origen de la fuente
- técnicamente no provino de github, pero ahora el repositorio de github será la fuente de registro
- "[email protected]: nyeates" es una conexión ssh que asume que ya ha configurado un par de llaves ssh confiable con github.
Empuje repo local para github
git push origin master
- empujar al origen remoto (github) desde la rama local maestra
Hay una gema oficial de github que, creo, hace esto. Intentaré agregar más información a medida que aprendo, pero recién estoy descubriendo esta gema, así que todavía no sé mucho.
ACTUALIZACIÓN: Después de configurar mi clave API, puedo crear un nuevo repositorio en github a través del comando create
, sin embargo, no puedo usar el comando create-from-local
, que se supone que toma el repositorio local actual y create-from-local
un Control remoto correspondiente en github.
$ gh create-from-local
=> error creating repository
Si alguien tiene alguna idea sobre esto, me encantaría saber qué estoy haciendo mal. Ya hay un problema archivado .
ACTUALIZACIÓN: eventualmente conseguí que esto funcionara. No estoy exactamente seguro de cómo volver a producir el problema, pero recién empecé desde cero (eliminé la carpeta .git)
git init
git add .emacs
git commit -a -m "adding emacs"
Ahora esta línea creará el repositorio remoto e incluso lo empujará, pero desafortunadamente no creo que pueda especificar el nombre del repositorio que me gustaría. Quería que se llamara "dotfiles" en github, pero la gema solo usaba el nombre de la carpeta actual, que era "jason" desde que estaba en mi carpeta de inicio. (Agregué un ticket pidiendo el comportamiento deseado)
gh create-from-local
Este comando, por otro lado, acepta un argumento para especificar el nombre del repositorio remoto, pero está diseñado para comenzar un nuevo proyecto desde cero, es decir, después de llamar a este comando, se obtiene un nuevo repositorio remoto que está rastreando un repositorio local. en una subcarpeta recién creada en relación con su posición actual, ambas con el nombre especificado como argumento.
gh create dotfiles
He creado un alias de Git para hacer esto, basado en la respuesta de Bennedich . Agregue lo siguiente a su ~/.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/"])''"
Para usarlo, ejecute
$ git hub-new-repo
desde cualquier lugar dentro del repositorio local, e ingrese su contraseña de Github cuando se le solicite.
Lo que necesitas es hub . Hub es un contenedor de línea de comandos para git. Se ha hecho para integrarse con git nativo utilizando alias. Intenta proporcionar acciones github en git, incluida la creación de un nuevo repositorio.
→ 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
Para obtener instrucciones sobre cómo crear un token, vaya here Este es el comando que escribirá (a partir de la fecha de esta respuesta. (Reemplace todas las palabras clave de CAPS):
curl -u ''YOUR_USERNAME'' -d ''{"scopes":["repo"],"note":"YOUR_NOTE"}'' https://api.github.com/authorizations
Una vez que ingrese su contraseña, verá lo siguiente que contiene su token.
{
"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"
}
Puedes revocar tu token en cualquier momento yendo aquí
Para todos los usuarios de Python 2.7. *. Hay una envoltura de Python alrededor de la API de Github que se encuentra actualmente en la Versión 3, llamada GitPython . Simplemente instale usando easy_install PyGithub
o 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)
Los documentos del objeto del Repository
están here .
Para usuarios con autenticación de dos factores, puede usar la solución de bennedich, pero solo necesita agregar el encabezado X-Github-OTP para el primer comando. Reemplace CODE con el código que obtiene del proveedor de autenticación de dos factores. Reemplace USER y REPO con el nombre de usuario y el nombre del repositorio, como lo haría en su solución.
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
Pasos simples (usando git
+ hub
=> GitHub ):
Ve a tu repositorio o crea uno vacío:
mkdir foo && cd foo && git init
.Ejecute:
hub create
, le preguntará acerca de las credenciales de GitHub por primera vez.Uso:
hub create [-p] [-d DESCRIPTION] [-h HOMEPAGE] [NAME]
Ejemplo:
hub create -d Description -h example.com org_name/foo_repo
El concentrador solicitará el nombre de usuario y la contraseña de GitHub la primera vez que necesite acceder a la API e intercambiarla por un token
OAuth
, que guarda en~/.config/hub
.Para nombrar explícitamente el nuevo repositorio, pase
NAME
, opcionalmente en la formaORGANIZATION/NAME
para crear bajo una organización de la que sea miembro.Con
-p
, cree un repositorio privado, y con-d
y-h
establezca la descripción del repositorio y laURL
página de inicio, respectivamente.Para evitar que se le solicite, utilice las variables de entorno
GITHUB_USER
yGITHUB_PASSWORD
.Luego confirme y presione como siempre o verifique
hub commit
/hub commit
/hub push
.
Para más ayuda, ejecute: hub help
.
Vea también: Importar un repositorio Git usando la línea de comandos en GitHub.
Por razones de representación, no puedo agregar esto como un comentario (donde sería mejor con la respuesta de Bennedich ), pero para la línea de comandos de Windows, aquí está la sintaxis correcta:
curl -u YOUR_USERNAME https://api.github.com/user/repos -d "{/" name / ": /" YOUR_REPO_NAME / "}"
Es la misma forma básica, pero tienes que usar comillas dobles (") en lugar de simples, y escapar de las comillas dobles enviadas en los parámetros POST (después de la marca -d) con barras invertidas. También eliminé las comillas simples de mi nombre de usuario, pero si su nombre de usuario tuviera un espacio (¿posible?) probablemente necesitaría comillas dobles.
Puede crear un repositorio de GitHub a través de la línea de comandos utilizando la API de GitHub. Echa un vistazo a la API de repositorio . Si se desplaza hacia abajo alrededor de un tercio del camino, verá una sección titulada "Crear" que explica cómo crear un repositorio a través de la API (justo arriba de esa es una sección que explica cómo vincular un repositorio con la API). ). Obviamente, no puedes usar git
para hacer esto, pero puedes hacerlo a través de la línea de comandos con una herramienta como curl
.
Fuera de la API, no hay forma de crear un repositorio en GitHub a través de la línea de comandos. Como notó, GitHub no permite el acceso a la shell, etc., así que aparte de la API de GitHub, la única forma de crear un repositorio es a través de la interfaz web de GitHub.
Recientemente me enteré de create-github-repo . Desde el readme:
Instalar:
$ npm i -g create-github-repo
Uso:
$ export CREATE_GITHUB_REPO_TOKEN=<access_token>
$ create-github-repo --name "My coolest repo yet!"
O:
$ create-github-repo <access_token> --name "My coolest repo yet!"
Si instala defunkt''s excelente herramienta Hub defunkt''s , esto se vuelve tan fácil como
git create
En palabras del autor, " hub es un envoltorio de línea de comandos para git que te hace mejor en GitHub " .
Disclamier: soy el autor del proyecto de código abierto.
Esta funcionalidad es compatible con: https://github.com/chrissound/LinuxVerboseCommandLib esencialmente es este 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
};
No, tiene que abrir un navegador al menos una vez para crear su username
de username
en GitHub, una vez creado, puede aprovechar la API de GitHub para crear repositorios desde la línea de comandos, siguiendo el siguiente comando:
curl -u ''github-username'' https://api.github.com/user/repos -d ''{"name":"repo-name"}''
Por ejemplo:
curl -u ''arpitaggarwal'' https://api.github.com/user/repos -d ''{"name":"command-line-repo"}''
Para los rubyistas:
gem install githubrepo
githubrepo create *reponame*
ingrese nombre de usuario y pw como se le solicite
git remote add origin *ctrl v*
git push origin master
Fuente: Elikem Adadevoh
crear un nuevo repositorio en la línea de comandos
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
empujar un repositorio existente desde la línea de comandos
git remote add origin https://github.com/**<gituserID>/<RepositoryName>**.git
git push -u origin master