and*_*toi 337 git ssh version-control github command-line-interface
我创建了一个新的本地Git存储库:
~$ mkdir projectname
~$ cd projectname
~$ git init
~$ touch file1
~$ git add file1
~$ git commit -m 'first commit'
Run Code Online (Sandbox Code Playgroud)
是否有任何git命令来创建一个新的远程仓库并从此处将我的提交推送到GitHub?我知道启动浏览器并转向创建新存储库没什么大不了的,但如果有办法从CLI实现这一点,我会很高兴.
我阅读了大量的文章,但我没有提到如何使用git命令从CLI创建远程仓库.Tim Lucas的好文章设置一个新的远程git存储库是我找到的最接近的,但GitHub不提供shell访问.
ben*_*ich 314
用于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
Run Code Online (Sandbox Code Playgroud)
mip*_*adi 210
您可以使用GitHub API通过命令行创建GitHub存储库.查看存储库API.如果向下滚动大约三分之一,您将看到一个标题为"创建"的部分,该部分解释了如何通过API创建存储库(正如上面的部分解释了如何使用API来交换存储库) ).显然你不能用git它来做,但你可以通过命令行使用像这样的工具curl.
在API之外,没有办法通过命令行在GitHub上创建一个repo.如你所知,GitHub不允许shell访问等,所以除了GitHub API之外,创建repo的唯一方法是通过GitHub的web界面.
Nay*_*Nay 68
这可以通过三个命令完成:
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
Run Code Online (Sandbox Code Playgroud)
(针对v3 Github API更新)
curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
Run Code Online (Sandbox Code Playgroud)
git remote add origin git@github.com:nyeates/projectname.git
Run Code Online (Sandbox Code Playgroud)
git push origin master
Run Code Online (Sandbox Code Playgroud)
ken*_*orb 15
简单步骤(使用git+ hub=> GitHub):
brew install hubgo get github.com/github/hub否则(也有Go):
git clone https://github.com/github/hub.git && cd hub && ./script/build
Run Code Online (Sandbox Code Playgroud)转到您的仓库或创建空仓: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存储库.
Xav*_*hot 14
使用 Github 官方新的命令行界面:
gh repo create
Run Code Online (Sandbox Code Playgroud)
例如,要完成您的 git 工作流程:
mkdir project
cd project
git init
touch file
git add file
git commit -m 'Initial commit'
gh repo create
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
Jas*_*ell 11
有一个官方的github宝石,我认为,这样做.我会尝试在学习时添加更多信息,但我现在才发现这个宝石,所以我还不知道.
更新:设置我的API密钥后,我可以通过create命令在github上创建一个新的repo ,但是我无法使用该create-from-local命令,该命令应该采用当前的本地存储并在github上进行相应的远程控制.
$ gh create-from-local
=> error creating repository
Run Code Online (Sandbox Code Playgroud)
如果有人对此有所了解,我很想知道我做错了什么.已经提出了一个问题.
更新:我最终做到了这一点.我不确定如何重新产生问题,但我刚从头开始(删除.git文件夹)
git init
git add .emacs
git commit -a -m "adding emacs"
Run Code Online (Sandbox Code Playgroud)
现在这行将创建远程仓库甚至推送它,但不幸的是我不认为我可以指定我想要的仓库的名称.我希望它在github上被称为"dotfiles",但是gh gem只使用了当前文件夹的名称,因为我在我的主文件夹中是"jason".(我添加了一张要求所需行为的票)
gh create-from-local
Run Code Online (Sandbox Code Playgroud)
另一方面,此命令确实接受一个参数来指定远程仓库的名称,但它用于从头开始一个新项目,即在您调用此命令后,您将获得一个跟踪本地仓库的新远程仓库.在新创建的相对于当前位置的子文件夹中,两者都具有指定为参数的名称.
gh create dotfiles
Run Code Online (Sandbox Code Playgroud)
每次创建存储库时键入完整代码都很麻烦
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
更简单的方法是:
githubscript.shgithubscript.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;Run Code Online (Sandbox Code Playgroud)
NB 这$1是repository nameargumentscriptYOUR_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;
到目前为止, 接受的答案和得票最多的答案现在都已经过时了。密码身份验证已弃用,并将于 UTC 时间 2020 年 11 月 13 日 16:00 删除。
现在使用 GitHub API 的方式是通过个人访问令牌。
您需要(替换全部大写关键字):
curl -H 'Authorization: token MY_ACCESS_TOKEN' https://api.github.com/user/repos -d '{"name":"REPO"}'
Run Code Online (Sandbox Code Playgroud)
或者,从一开始就将其设为私有:
curl -H 'Authorization: token MY_ACCESS_TOKEN' https://api.github.com/user/repos -d '{"name":"REPO", "private":"true"}'
Run Code Online (Sandbox Code Playgroud)
git remote add origin git@github.com:USER/REPO.git
git push origin master
Run Code Online (Sandbox Code Playgroud)
这样做的缺点是您必须每次都输入令牌,并且它会出现在您的 bash 历史记录中。
为了避免这种情况,您可以
HEADER_FILE)Authorization: token MY_ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
Authorization: token MY_ACCESS_TOKEN
Run Code Online (Sandbox Code Playgroud)
curl -H @HEADER_FILE https://api.github.com/user/repos -d '{"name":"REPO"}' # public repo
curl -H @HEADER_FILE https://api.github.com/user/repos -d '{"name":"REPO", "private":"true"}' # private repo
Run Code Online (Sandbox Code Playgroud)
chmod 400 HEADER_FILE
sudo chown root:root HEADER_FILE
Run Code Online (Sandbox Code Playgroud)
更新 20200714
Github 有一个新的官方CLI。
...gh 是一个新项目,可帮助我们探索具有根本不同设计的官方 GitHub CLI 工具的外观。虽然这两个工具都将 GitHub 带到终端,但 hub 充当 git 的代理,而 gh 是一个独立的工具。
与 hub 的核心区别在于它不包含现有的 git 命令。因此,您不能像使用集线器那样将 git 别名为 gh。
我们没有将它添加到集线器,因为我们决定将 GitHub CLI 设计为不同于 git 包装器,即作为它自己的命令。事实证明,维护一个作为 git 代理的可执行文件很难维护,而且我们也不希望受到必须始终保持 git 兼容性的限制。我们不想在从一开始就脆弱的范式上构建 GitHub CLI。
-- mislav(集线器的维护者)
原答案
你需要的是hub。Hub 是 git 的命令行包装器。它已使用别名与本机 git 集成。它尝试向 git 提供 github 操作,包括创建新存储库。
? 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
Run Code Online (Sandbox Code Playgroud)
基于@Mechanical Snail 的另一个答案,除了不使用 python,我发现它太过分了。将此添加到您的~/.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 git@github.com:$GHUSER/$REPO.git; git push origin master"
Run Code Online (Sandbox Code Playgroud)
不,你必须至少打开浏览器一次才能username在 GitHub 上创建你的,一旦创建,你可以利用GitHub API从命令行创建存储库,遵循以下命令:
curl -u 'github-username' https://api.github.com/user/repos -d '{"name":"repo-name"}'
Run Code Online (Sandbox Code Playgroud)
例如:
curl -u 'arpitaggarwal' https://api.github.com/user/repos -d '{"name":"command-line-repo"}'
Run Code Online (Sandbox Code Playgroud)
最后,GitHub 正式宣布了其所有核心功能的新 CLI。
检查这里: https: //cli.github.com/
通过 HomeBrew 安装:brew install gh其他方式: https: //github.com/cli/cli#installation
然后
gh repo create
Run Code Online (Sandbox Code Playgroud)
其他可用功能。
$ gh --help
Work seamlessly with GitHub from the command line.
USAGE
gh <command> <subcommand> [flags]
CORE COMMANDS
gist: Create gists
issue: Manage issues
pr: Manage pull requests
release: Manage GitHub releases
repo: Create, clone, fork, and view repositories
ADDITIONAL COMMANDS
alias: Create command shortcuts
api: Make an authenticated GitHub API request
auth: Login, logout, and refresh your authentication
completion: Generate shell completion scripts
config: Manage configuration for gh
help: Help about any command
FLAGS
--help Show help for command
--version Show gh version
EXAMPLES
$ gh issue create
$ gh repo clone cli/cli
$ gh pr checkout 321
ENVIRONMENT VARIABLES
See 'gh help environment' for the list of supported environment variables.
LEARN MORE
Use 'gh <command> <subcommand> --help' for more information about a command.
Read the manual at https://cli.github.com/manual
FEEDBACK
Open an issue using 'gh issue create -R cli/cli'
Run Code Online (Sandbox Code Playgroud)
现在您可以从终端创建存储库。