我创建了一个新的本地Git存储库:
~$ mkdir projectname
~$ cd projectname
~$ git init
~$ touch file1
~$ git add file1
~$ git commit -m 'first commit'
有没有任何git命令来创建一个新的远程回购,并从这里将我的提交推到GitHub ?我知道打开浏览器去创建一个新的存储库并不是什么大问题,但是如果有一种方法可以从CLI实现这一点,我会很高兴。
我读了大量的文章,但没有一篇提到如何使用git命令从CLI创建远程回购。Tim Lucas的一篇不错的文章“设置一个新的远程git存储库”是我找到的最接近的文章,但是GitHub不提供shell访问。
有一个官方的github宝石,我认为,这样做。随着我的学习,我会尝试添加更多的信息,但我现在才刚刚发现这个宝石,所以我知道的还不多。
更新:设置我的API密钥后,我能够通过创建命令在github上创建一个新的repo,但是我不能使用create-from-local命令,这应该是采取当前的本地repo,并在github上做出相应的远程。
$ gh create-from-local
=> error creating repository
如果有人对此有一些见解,我很想知道我做错了什么。已经有问题了。
更新:我最终让这个工作。我不确定如何重新产生的问题,但我只是从头开始(删除。git文件夹)
git init
git add .emacs
git commit -a -m "adding emacs"
现在这一行将创建远程回购,甚至推到它,但不幸的是,我认为我不能指定我想要的回购的名称。我想要它被称为“dotfiles”在github上,但gh宝石只是使用当前文件夹的名称,这是“jason”,因为我是在我的家庭文件夹。(我添加了一张要求所需行为的票)
gh create-from-local
另一方面,这个命令接受一个参数来指定远程repo的名称,但它用于从头开始一个新项目,即在调用这个命令后,您将获得一个新的远程repo,它在相对于当前位置的新创建的子文件夹中跟踪一个本地repo,两者的名称都指定为参数。
gh create dotfiles
基于Bennedich的回答,我创建了一个Git别名。在~/.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\", \"git@github.com:{0}/{1}.git\".format(user, repo)]); check_call([\"git\", \"push\", \"origin\", \"master\"])'"
要使用它,运行
$ git hub-new-repo
从本地存储库中的任何地方,并在提示时输入您的Github密码。
这是我的初始git命令(可能,这个操作发生在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