[git] 브라우저를 열지 않고 CLI에서 GitHub에 원격 저장소를 작성할 수 있습니까?

새로운 로컬 Git 리포지토리를 만들었습니다.

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

새로운 원격 저장소 를 만들고 여기에서 커밋을 GitHub에 푸시 하는 git 명령이 있습니까? 브라우저를 실행하고 Create New Repository로 넘어가는 것이 큰 도움이되지 않는다는 것을 알고 있지만 CLI에서이를 달성 할 수있는 방법이 있다면 기쁠 것입니다.

방대한 기사를 읽었지만 git 명령을 사용하여 CLI에서 원격 저장소를 만드는 방법에 대해서는 언급하지 않았습니다. Tim Lucas의 좋은 기사 새로운 원격 git 저장소를 설정하는 것이 내가 찾은 가장 가까운 것이지만 GitHub는 쉘 액세스를 제공하지 않습니다 .



답변

GitHub API를 사용하여 명령 행을 통해 GitHub 저장소를 작성할 수 있습니다. 저장소 API를 확인하십시오 . 세 번째 방법으로 아래로 스크롤 하면 API를 통해 리포지토리를 만드는 방법을 설명하는 “만들기” 라는 제목 의 섹션이 있습니다. ). 분명히이 git작업을 수행 하는 데 사용할 수는 없지만 명령 줄을 통해 같은 도구를 사용 하여 수행 할 수 있습니다 curl.

API 외부에서는 명령 줄을 통해 GitHub에 리포지토리를 만들 수있는 방법이 없습니다. 언급했듯이 GitHub는 쉘 액세스 등을 허용하지 않으므로 GitHub API 외에도 저장소를 생성하는 유일한 방법은 GitHub의 웹 인터페이스를 통하는 것입니다.


답변

github API v3 용 CLI 명령 (모든 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 git@github.com:USER/REPO.git
git push origin master


답변

이것은 세 가지 명령으로 수행 할 수 있습니다.

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

(v3 Github API 용으로 업데이트 됨)

이 명령에 대한 설명 …

github 저장소 만들기

    curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
  • curl은 URL을 검색하고 상호 작용하는 유닉스 명령입니다 (위의 Mac에서도 작동 함). 일반적으로 이미 설치되어 있습니다.
  • “-u”는 서버 인증에 사용할 사용자 이름 및 비밀번호를 지정하는 curl 매개 변수입니다.
    • 위의 예와 같이 사용자 이름을 지정하면 curl이 암호를 묻습니다.
    • 비밀번호를 입력하지 않으려면 인증 에 대한 githubs API 설명서를 참조하십시오.
  • “-d”는 요청과 함께 POST 데이터를 보낼 수있는 curl 매개 변수입니다.
  • “name”은 유일한 POST 데이터입니다. “설명”도 포함하고 싶습니다
  • 작은 따옴표 ”로 모든 POST 데이터를 인용하는 것이 좋습니다.

어디로 푸시할지 정의

git remote add origin git@github.com:nyeates/projectname.git
  • github에서 연결된 (원격) 저장소의 위치 및 존재에 대한 정의 추가
  • “origin”은 소스가 어디에서 왔는지 git이 사용하는 기본 이름입니다.
    • 기술적으로 github에서 나오지 않았지만 이제는 github 저장소가 레코드 소스가됩니다.
  • “git@github.com : nyeates”는 이미 github으로 신뢰할 수있는 ssh 키 쌍을 설정했다고 가정하는 ssh 연결입니다.

로컬 저장소를 github에 푸시

git push origin master
  • 마스터 로컬 브랜치에서 원점 원격 (github)으로 푸시

답변

defunkt의 우수한 Hub 도구 를 설치하면 다음과 같이 쉬워집니다.

git create

저자의 말에 따르면 ” hub는 GitHub에서 더 나은 git의 명령 줄 래퍼입니다.


답변

간단한 단계 ( git+ hub=> GitHub 사용 ) :

  1. 허브 설치 ( GitHub )를 .

    • OS X : brew install hub
    • 가진 이동 :go get github.com/github/hub
    • 그렇지 않으면 ( 가는 것도 있음) :

      git clone https://github.com/github/hub.git && cd hub && ./script/build
      
  2. 리포지토리로 이동하거나 비어있는 리포지토리를 만드십시오 mkdir foo && cd foo && git init..

  3. Run : hub create, 그것은 처음으로 GitHub 자격 증명에 대해 묻습니다.

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

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

    Hub는 API에 처음 액세스 할 때 GitHub 사용자 이름 및 비밀번호를 묻는 메시지를 표시하고이를 OAuth토큰으로 교환하여에 저장 ~/.config/hub합니다.

    새 리포지토리의 이름을 명시 적으로 지정하려면을 NAME선택적으로 ORGANIZATION/NAME소속 된 조직에서 만들 양식으로 전달하십시오 .

    으로 -p, 개인 저장소를 작성하고,과
    -d-h저장소의 설명과 홈페이지를 설정 URL각각.

    프롬프트가 표시되지 않게하려면 GITHUB_USERGITHUB_PASSWORD환경 변수를 사용 하십시오.

  4. 그런 다음 평소처럼 커밋하고 푸시하거나 hub commit/를 확인하십시오 hub push.

도움이 필요하면 다음을 실행하십시오 hub help..

GitHub 의 명령 행사용하여 Git 저장소 가져 오기도 참조하십시오 .


답변

공식 GitHub의 보석은 , 내가 생각하기에,이 작업을 수행합니다. 내가 배우면서 더 많은 정보를 추가하려고 노력할 것이지만, 나는 지금 단지이 보석을 발견하고 있기 때문에 아직 잘 모른다.

업데이트 : API 키를 설정 한 후 create명령을 통해 github에서 새 저장소를 만들 수는 있지만 create-from-local현재 로컬 저장소를 가져 와서 github에서 해당 원격 장치를 만들어야하는 명령 을 사용할 수 없습니다 .

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

누군가 이것에 대한 통찰력이 있다면, 내가 뭘 잘못하고 있는지 알고 싶습니다. 이미 제기문제가 있습니다 있습니다.

업데이트 : 결국이 작업을 수행했습니다. 문제를 재현하는 방법을 정확히 모르지만 처음부터 시작했습니다 (.git 폴더 삭제)

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

이제이 줄은 원격 저장소를 만들고 심지어 밀어 넣습니다. 그러나 불행히도 원하는 저장소의 이름을 지정할 수 있다고 생각하지 않습니다. github에서 “dotfiles”라고 부르기를 원했지만 gh gem은 현재 폴더의 이름을 사용했습니다. 홈 폴더에 있던 이래로 “jason”이었습니다. ( 원하는 행동을 요구 하는 티켓을 추가 했습니다 )

gh create-from-local

반면에이 명령은 원격 저장소의 이름을 지정하는 인수를 허용하지만 새 프로젝트를 처음부터 시작하기위한 것입니다. 즉,이 명령을 호출 한 후 로컬 저장소를 추적하는 새로운 원격 저장소를 얻습니다. 인수로 지정된 이름을 사용하여 현재 위치를 기준으로 새로 만든 하위 폴더에서

gh create dotfiles


답변

Bash 셸을 사용하여 원격 리포지토리를 빠르게 만들려면

리포지토리를 만들 때마다 완전한 코드를 입력하는 것은 번거 롭습니다.


curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}'
git remote add origin git@github.com:USER/REPO.git
git push origin master

더 쉬운 방법은 다음과 같습니다.

  1. / home / USER_NAME / Desktop / my_scripts 디렉토리에 쉘 스크립트를 만듭니다. githubscript.sh
  2. 다음 코드를 수정하여 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 git@github.com:YOUR_GITHUB_USER_NAME/$1.git;

NB는 다음 $1은 IS repository nameint로서 전달됨argumentscriptYOUR_GITHUB_USER_NAME 스크립트를 저장하기 전에
변경을 호출 할 때 입니다.

  1. 필요한 권한을 script파일에

    chmod 755 githubscript.sh

  2. 환경 구성 파일에 scripts 디렉토리를 포함하십시오.

    nano ~/.profile;
    export PATH="$PATH:$HOME/Desktop/my_scripts"

  3. 또한 githubscript.sh 파일을 실행하도록 별명을 설정하십시오.

    nano ~/.bashrc;
    alias githubrepo="bash githubscript.sh"

  4. 이제 다시로드 .bashrc.profile 터미널에서 파일을 .

    source ~/.bashrc ~/.profile;

  5. 이제 새로운 저장소를 작성하십시오 demo.

    githubrepo demo;