目前,无论是被接受的答案还是目前得到最多票数的答案都已过时。密码身份验证已经不再建议使用,并将于2020年11月13日16:00 UTC之后被删除。
现在使用GitHub API的方式是通过个人访问令牌。
您需要(替换所有大写关键词):
- 通过网站创建个人访问令牌。是的,您必须使用浏览器,但这只需一次即可用于未来的所有访问。请安全地存储该令牌。
- 通过
curl -H 'Authorization: token MY_ACCESS_TOKEN' https://api.github.com/user/repos -d '{"name":"REPO"}'
或者,从一开始就使其变为私有:
curl -H 'Authorization: token MY_ACCESS_TOKEN' https://api.github.com/user/repos -d '{"name":"REPO", "private":"true"}'
- 添加新的来源并将其推送:
git remote add origin git@github.com:USER/REPO.git
git push origin master
这种方法的缺点是每次都需要输入令牌,并且它会出现在您的bash历史记录中。
为了避免这个问题,您可以:
- 将头信息存储在一个文件中(我们称之为
HEADER_FILE
)
Authorization: token MY_ACCESS_TOKEN
- 让curl从文件中读取内容
curl -H @HEADER_FILE https://api.github.com/user/repos -d '{"name":"REPO"}'
curl -H @HEADER_FILE https://api.github.com/user/repos -d '{"name":"REPO", "private":"true"}'
为了增强安全性,您可以将访问权限设置为400,并将用户设置为root。
chmod 400 HEADER_FILE
sudo chown root:root HEADER_FILE
- 现在需要使用sudo来访问头文件
sudo curl -H @HEADER_FILE https://api.github.com/user/repos -d '{"name":"REPO"}'
sudo curl -H @HEADER_FILE https://api.github.com/user/repos -d '{"name":"REPO", "private":"true"}'
~/.bash_history
中。我建议用-u 'USER'
替换-u 'USER:PASS'
,这样 curl 就会交互地要求你输入密码。 - ivanzoidcurl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO", "private":"true"}'
。 - Joe Fletchergit config --global alias.gh-create '!sh -c "curl -u \"USERNAME\" https://api.github.com/user/repos -d \"{\\\"name\\\":\\\"$1\\\"}\"" -'
- Robin Winslowcurl https://api.github.com/user/repos?access_token=myAccessToken -d '{"name":"REPO"}'。:-)
- Ionică Bizău