it-swarm.dev

Tarayıcı açmadan CLI'den GitHub'da uzak bir repo oluşturmak mümkün müdür?

Yeni bir yerel Git deposu oluşturdum:

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

Yeni bir uzaktan repo oluşturmak için Git komutu var mı ve buradan GitHub'a olan bağlılığımı itin mi? Bir tarayıcıyı başlatıp başa çıkmanın önemli olmadığını biliyorum Yeni Depo Oluşturun , ancak bunu CLI'den elde etmenin bir yolu varsa mutlu olurum.

Çok sayıda makale okudum, ancak hiçbiri CLI'den git komutlarını kullanarak uzak bir repo oluşturma konusunda bahsetmiyorum. Tim Lucas'ın Güzel makalesi Yeni bir uzaktan git deposu kurma , bulduğum en yakını , ancak GitHub Shell erişimi sağlamıyor.

331
anddoutoi

GitHub API'sini kullanarak komut satırı üzerinden GitHub deposu oluşturabilirsiniz. depo API 'sini inceleyin. Yolun üçte birini aşağı kaydırırsanız, API üzerinden bir repo oluşturmayı açıklayan "Oluştur" başlıklı bir bölüm görürsünüz (hemen üstünde, nasıl çatallanacağını açıklayan bir bölüm vardır). API ile bir repo da). Açıkçası bunu yapmak için git kullanamazsınız, ancak bunu komut satırı üzerinden curl gibi bir araçla yapabilirsiniz.

API dışında, GitHub'da komut satırı üzerinden bir repo oluşturmanın yolu yoktur. Sizin de belirttiğiniz gibi GitHub, Shell erişimine izin vermiyor, vb. GitHub API'sı dışında, bir repo oluşturmanın tek yolu GitHub'ın web arayüzü.

207
mipadi

Github API v3 için CLI komutları (tüm CAPS anahtar kelimelerini değiştirin):

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

Bu üç komutla yapılabilir:

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

(v3 Github API için güncellendi)


Bu komutların açıklaması ...

Github repo oluştur

    curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
  • curl, URL'leri alan ve bunlarla etkileşime giren bir unix komutudur (yukarıda mac'ta da çalışır). Genellikle kurulur.
  • "-u", sunucu kimlik doğrulaması için kullanılacak kullanıcı adını ve şifreyi belirten bir kıvrılma parametresidir.
    • Sadece kullanıcı adını verirseniz (yukarıdaki örnekte gösterildiği gibi) curl bir şifre ister.
    • Şifreyi girmek istemiyorsanız, githubs api belgelerine bakın Authentication
  • "-d", isteği ile POST veri göndermenizi sağlayan bir curl parametresidir.
  • "ad", yalnızca POST verisi gerekli; Ayrıca "açıklama" eklemeyi severim
  • Tüm POST verilerini tek tırnaklı '' alıntı yapmanın iyi olduğunu buldum

Nereye itileceğini tanımlayın

git remote add Origin [email protected]:nyeates/projectname.git
  • github'da bağlı (uzak) deponun yeri ve varlığı için tanım ekleyin
  • "Origin", kaynağın Kaynağından geldiği yer için git tarafından kullanılan varsayılan bir addır.
    • teknik olarak github'dan gelmedi, ama şimdi github repo rekor kaynağı olacak
  • "[email protected]: nyeates", zaten github ile güvenilir bir ssh keypair kurduğunuzu varsayar bir ssh bağlantısıdır.

Github için yerel repoyu itin

git Push Origin master
  • Ana yerel şubeden Origin uzaktan kumandasına (github) basın
67
Nay

defunkt's excellent Hub aracını yüklerseniz, bu kadar kolay olur

git create

Yazarın sözleriyle, " hub, GitHub'ta sizi daha iyi kılan git için komut satırı sargısıdır. "

50
cavalcade

Basit adımlar (git + hub => () GitHub ):

  1. Hub ( GitHub ) yükleyin.

    • OS X: brew install hub
    • sahip Git : go get github.com/github/hub
    • aksi halde (sahip Git ):

      git clone https://github.com/github/hub.git && cd hub && ./script/build
      
  2. Deponuza gidin veya boş bir tane oluşturun: mkdir foo && cd foo && git init.

  3. Çalıştır: hub create, size ilk defa GitHub kimlik bilgilerini sorar.

    Kullanım: hub create [-p] [-d DESCRIPTION] [-h HOMEPAGE] [NAME]

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

    Hub, API’ye ilk erişmesi gerektiğinde GitHub kullanıcı adı ve şifresi ister ve bunu ~/.config/hub içine kaydettiği bir OAuth belirteci ile değiştirir.

    Yeni depoya açıkça ad vermek için, üye olduğunuz bir kuruluş altında oluşturmak üzere NAME, isteğe bağlı olarak ORGANIZATION/NAME formunu girin.

    -p ile özel bir depo oluşturun ve -d ve -h ile sırasıyla depo tanımını ve anasayfasını URL olarak ayarlayın.

    İstenmesini önlemek için, GITHUB_USER ve GITHUB_PASSWORD ortam değişkenlerini kullanın.

  4. Ardından her zamanki gibi taahhüt edin ve bastırın ya da hub commit/hub Push işaretini kontrol edin.

Daha fazla yardım için, çalıştırın: hub help.

Ayrıca bakınız: Komut satırını kullanarak Git havuzunu içe aktarma GitHub'da.

15
kenorb

Bir resmi github mücevher var ki bence bunu yapıyor. Öğrendiğim gibi daha fazla bilgi eklemeye çalışacağım, ama sadece şu anda bu taşı keşfediyorum, bu yüzden henüz fazla bir şey bilmiyorum.

GÜNCELLEME: API anahtarımı ayarladıktan sonra, github'da create komutu ile yeni bir repo oluşturabilirim, ancak şu anki yerel bilgiyi almak için kullanılan create-from-local komutunu kullanamıyorum repo ve github üzerinde karşılık gelen bir uzaktan kumanda yapmak.

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

Bu konuda bir fikri olan varsa, neyi yanlış yaptığımı bilmek isterim. Zaten bir dosyalanmış var.

GÜNCELLEME: Sonunda bu işe almak için aldım. Sorunun nasıl yeniden üretileceğinden tam olarak emin değilim, ancak sıfırdan başladım (.git klasörünü silindi)

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

Şimdi bu satır uzak repo yaratacak ve hatta Push it, ancak ne yazık ki istediğim repo adını belirleyebileceğimi sanmıyorum. Github'da "dotfiles" olarak adlandırılmasını istedim, ama gh gem sadece şu anki klasörümün adını kullandı, bu benim ana klasörümden beri "jason" idi. (Ben ekledim bir bilet istenen davranışı soran)

gh create-from-local

Öte yandan, bu komut uzak reponun adını belirlemek için bir argüman kabul eder, ancak sıfırdan yeni bir proje başlatmak için kullanılır, yani bu komutu çağırdıktan sonra, yerel bir repoyu takip eden yeni bir uzaktan repo alırsınız. Her ikisi de bağımsız değişken olarak belirtilen adla, geçerli konumunuza göre yeni oluşturulan bir alt klasörde.

gh create dotfiles
11
Jason Marcell

Bash Kabuğunu Kullanarak Uzak Depoyu Hızlıca Oluşturma

Her depo oluşturulduğunda kodun tamamını girmeniz zordur.

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

Daha kolay bir yaklaşım:

  1. githubscript.sh adlı i.e./home/USER_NAME/Desktop/my_scripts dizininde bir Shell betiği oluşturun
  2. Aşağıdaki kodu değiştirin ve githubscript.sh dosyasına kaydedin
#!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 İşte $1, repository name, argument öğesini çağırırken script olarak geçirilir. Komut dosyasını kaydetmeden önce YOUR_GITHUB_USER_NAME.

  1. Gerekli izinleri script dosyasına chmod 755 githubscript.sh olarak ayarlayın

  2. Scripts dizinini ortam yapılandırma dosyasına dahil edin. nano ~/.profile; export PATH="$PATH:$HOME/Desktop/my_scripts"

  3. Ayrıca, githubscript.sh dosyasını çalıştırmak için bir diğer ad belirleyin. nano ~/.bashrc; alias githubrepo="bash githubscript.sh"

  4. Şimdi terminaldeki .bashrc ve .profile dosyalarını yeniden yükleyin. source ~/.bashrc ~/.profile;

  5. Şimdi yeni bir depo oluşturmak için i.e. demo: githubrepo demo;

9

Hayır, GitHub'da username'ınızı oluşturmak için bir tarayıcıyı en azından bir kez açmanız gerekir, bir kez oluşturulduktan sonra, kaldıraç Komut satırından havuzları oluşturmak için GitHub API , aşağıdaki komutu uygulayın:

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

Örneğin:

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

İki faktörlü kimlik doğrulaması olan kullanıcılar için bennedich'in çözümünü kullanabilirsiniz, ancak ilk komut için sadece X-Github-OTP başlığını eklemeniz gerekir. İki faktörlü kimlik doğrulama sağlayıcısından aldığınız kodla CODE değiştirin. USER ve REPO'yu, çözümünde olduğu gibi, deponun kullanıcı adı ve adıyla değiştirin.

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

Rubyistler İçin:

gem install githubrepo
githubrepo create *reponame*

kullanıcı adı ve istendiğinde pw girin

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

Kaynak: Elikem Adadevoh

3
Benjamin Dunphy

GitHub ve BitBucket için REST API'larını kullanarak bunun için Gitter adlı şık bir komut dosyası yazdım:

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 = yeni repo oluştur
  • -r = repo sağlayıcısı (g = GitHub, b = BitBucket)
  • -n = Repoyu adlandır
  • -l = (isteğe bağlı) depodaki uygulamanın dilini ayarla
3
D.Deriso

@Mechanical Salyangoz tarafından verilen diğer cevaba göre, çılgınca overkill olarak bulduğum piton kullanımı dışında. Bunu ~/.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"
3
robru

Bunu yapmak için bir Git takma adı oluşturdum, Bennedich's answer . Aşağıdakileri ~/.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\"])'"

Kullanmak için koş

$ git hub-new-repo

yerel depodaki herhangi bir yerden, istendiğinde Github şifrenizi girin.

3
Mechanical snail

Belirteç oluşturma talimatları için, gidin burada Bu, yazacağınız komuttur (bu cevap tarihinden itibaren. (Tüm CAPS anahtar kelimelerini değiştirin):

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

Parolanızı girdikten sonra, kartınızı içeren aşağıdakileri göreceksiniz.

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

İstediğiniz zaman belirtecinizi iptal ederek burada

2
reubano

Tüm Python 2.7. * Kullanıcıları için. Şu anda Sürüm 3'teki Github API etrafında GitPython şeklinde bir Python sarıcı var. Basitçe easy_install PyGithub veya pip install PyGithub kullanarak kurun.

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 nesne belgeleri: burada .

2
quine

Temsilcilik nedenleriyle, bunu yorum olarak ekleyemiyorum (daha iyi gideceği yerlere bennedich'in cevabı ), ancak Windows komut satırı için doğru sözdizimi:

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

Aynı temel formdur, ancak tek yerine çift tırnak işareti (") kullanmanız ve POST parametrelerinde (-d bayrağından sonra) ters eğik çizgi ile gönderilen çift tırnak işaretinden kaçmanız gerekir. kullanıcı adımın etrafında tek tırnak, ancak eğer kullanıcı adınız bir boşluk bıraksaydı (mümkün mü?).

2
traycerb

İhtiyacınız olan şey hub . Hub, git için bir komut satırı sarmalayıcısıdır. Takma adı kullanarak yerel git ile bütünleşmek için yapılmıştır. Yeni depo oluşturma dahil olmak üzere github eylemlerini gitmeye sağlamaya çalışır.

→  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

Feragatname: Açık kaynaklı projenin yazarıyım

Bu işlevsellik aşağıdakiler tarafından desteklenir: https://github.com/chrissound/Human-Friendly-Commands esasında bu 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
};
2

Sevdiğim bu çözümü buldum: https://medium.com/@jakehasler/how-to-create-a-remote-git-repo-from-the-command-line-2d6857f49564

Öncelikle bir Github Personal Access Token oluşturmanız gerekir

En sevdiğiniz metin düzenleyicide ~/.bash_profile veya ~/.bashrc dosyasını açın. Dışa aktarılan değişkenlerin geri kalanının bulunduğu dosyanın üstüne, aşağıdaki satırı ekleyin:

export GITHUB_API_TOKEN=<your-token-here>

Aşağıda bir yerde, diğer bash işlevlerinizle aşağıdakine benzer bir şey yapıştırabilirsiniz:

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

Artık ne zaman yeni bir proje oluşturursanız olun, Github kullanıcı hesabınızda yeni bir genel uzak havuz oluşturmak için $ new-git awesome-repo komutunu çalıştırabilirsiniz.

0
Joshua Dance