我创建了一个新的本地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 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
您可以使用GitHub API通过命令行创建GitHub存储库.查看存储库API.如果向下滚动大约三分之一,您将看到一个标题为"创建"的部分,该部分解释了如何通过API创建存储库(正如上面的部分解释了如何使用API来交换存储库) ).显然你不能用git
它来做,但你可以通过命令行使用像这样的工具curl
.
在API之外,没有办法通过命令行在GitHub上创建一个repo.如你所知,GitHub不允许shell访问等,所以除了GitHub API之外,创建repo的唯一方法是通过GitHub的web界面.
这可以通过三个命令完成:
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更新)
curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
curl是一个unix命令(上面也适用于mac),它检索URL并与之交互.它通常已经安装.
"-u"是一个curl参数,它指定用于服务器身份验证的用户名和密码.
如果您只是提供用户名(如上例所示),curl将提示输入密码.
如果您不想输入密码,请参阅有关身份验证的 githubs api文档
"-d"是一个curl参数,允许您使用请求发送POST数据
您正在以githubs 定义的API格式发送POST数据
"name"是唯一需要的POST数据; 我还想包括"描述"
我发现用单引号引用所有POST数据是好的
git remote add origin git@github.com:nyeates/projectname.git
在github上添加连接(远程)repo的位置和存在的定义
"origin"是git用于源来源的默认名称
技术上没有来自github,但现在github repo将成为记录的来源
"git@github.com:nyeates"是一个ssh连接,假设您已经使用github设置了可信的ssh密钥对.
git push origin master
从主本地分支推送到源远程(github)
如果您安装defunkt的优秀Hub工具,那么就变得如此简单
git create
用作者的话说," hub是git的命令行包装器,可以让你在GitHub上更好. "
简单步骤(使用git
+ hub
=> GitHub):
安装集线器(GitHub).
OS X: brew install hub
有围棋:go get github.com/github/hub
否则(也有Go):
git clone https://github.com/github/hub.git && cd hub && ./script/build
转到您的仓库或创建空仓:mkdir foo && cd foo && git init
.
运行: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_USER
和GITHUB_PASSWORD
环境变量.
然后像往常一样提交和推送或检查hub commit
/ hub push
.
如需更多帮助,请运行:hub help
.
另请参阅:使用 GitHub上的命令行导入Git存储库.
有一个官方的github宝石,我认为,这样做.我会尝试在学习时添加更多信息,但我现在才发现这个宝石,所以我还不知道.
更新:设置我的API密钥后,我可以通过create
命令在github上创建一个新的repo ,但是我无法使用该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
每次创建存储库时键入完整代码都很麻烦
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
更简单的方法是:
在目录中创建一个shell脚本,即/ home/USER_NAME/Desktop/my_scripts命名 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 git@github.com:YOUR_GITHUB_USER_NAME/$1.git;
NB 这$1
是repository name
argument
script
YOUR_GITHUB_USER_NAME
在保存脚本之前调用
Change 时传递的.
为script
文件
设置所需的权限
chmod 755 githubscript.sh
在环境配置文件中包含scripts目录.
nano ~/.profile;
export PATH="$PATH:$HOME/Desktop/my_scripts"
还设置别名以运行githubscript.sh文件.
nano ~/.bashrc;
alias githubrepo="bash githubscript.sh"
现在重新加载终端中的.bashrc
和.profile
文件.
source ~/.bashrc ~/.profile;
现在创建一个新的存储库,即demo
:
githubrepo demo;