使用curl命令管理远程github库

新建远程仓库

  1. 在本地准备工作 进入一个目录,这个目录是本地仓库的目录; 在本地建立仓库
1
git init && git add . && git commit -m 'some information'
  1. 新建一个API token 打开此链接,generate new token,写入description,选择scopes(设置此token持有者的权限)。记住personal access token(也就是那一串字符和数字)!这一串东西只出现一次,下次查看不到。

基础命令

这是最直接的一种形式,直接把参数写到命令行搞定:

1
2
curl -u git账号 -d '{"name":"新库名","description":"库描述"}' https://api.github.com/user/repos
curl -u "$username:$token" https://api.github.com/user/repos -d '{"name":"'$repo_name'"}'

注:这里需要把$username$token分别换成实际的用户名和刚才记住的personal access token,把$repo_name换成任何想要的repo name

bash 形式

我们可以把命令行写成bash脚本,下次只要执行里面的简单命令就可以执行以上整条命令。

  1. usernametoken写入(apend或者修改)~/.gitconfig,形式如下:
1
2
3
[github]
    user = your user name 
    token = the token you get
  1. 把如下 bash code写入(append)~/.bash_profile文件
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
github-create() {
    repo_name=$1

    dir_name=`basename $(pwd)`

    if [ "$repo_name" = "" ]; then
    echo "Repo name (hit enter to use '$dir_name')?"
        read repo_name
    fi

    if [ "$repo_name" = "" ]; then
        repo_name=$dir_name
    fi

    username=`git config github.user`
    if [ "$username" = "" ]; then
        echo "Could not find username, run 'git config --global github.user <username>'"
        invalid_credentials=1
    fi

    token=`git config github.token`
    if [ "$token" = "" ]; then
        echo "Could not find token, run 'git config --global github.token <token>'"
        invalid_credentials=1
    fi

    if [ "$invalid_credentials" == "1" ]; then
        return 1
    fi

    echo -n "Creating Github repository '$repo_name' ..."
    curl -u "$username:$token" https://api.github.com/user/repos -d '{"name":"'$repo_name'"}' > /dev/null 2>&1
    echo " done."

    echo -n "Pushing local code to remote ..."
    git remote add origin git@github.com:$username/$repo_name.git > /dev/null 2>&1
    git push -u origin master > /dev/null 2>&1
    echo " done."
}
  • 也可以将脚本保存在github-create.sh文件中,让后在~/.bash_profile添加导入语句
1
. "$HOME/your path/github-create.sh"
  • 也可以导入到oh-my-zsh配置文件zshrc.zsh-template中,每次创建myzsh窗口时,github-create方法会初始化在环境中:
1
. "$HOME/hsg/hexo/Util/tool/github-create.sh"
  1. 重新打开或新启动一个终端窗口,或者也可以在当前Terminal下运行如下命令
1
Source  ~/.bash_profile
  1. 然后就可以用如下命令创建远程仓库了
1
github-create [repo name]

如果你不想用默认repo name(也就是当前目录名)创建repo可以重新输入另一个名字,否则直接按回车执行。

bash形式–简化版

  1. 把如下bash code写入(append)~/.bash_profile文件。第十行按照形式一处理一下。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
simple-create() {
    if [ $1 ]
    then
        repo_name=$1
    else
        echo "Repo name?"
        read repo_name
    fi
    
    curl -u '$username:$token' https://api.github.com/user/repos -d '{"name":"'$repo_name'"}'
    git remote add origin git@github.com:efatsi/$repo_name.git
    git push -u origin master
}
  1. 重新打开或新启动一个终端窗口,或者也可以在当前Terminal下运行如下命令
1
Source  ~/.bash_profile
  1. 执行命令
1
simple-create [repo name]

查询现有库

1
curl -u git账号 https://api.github.com/repos/账号/库名

初始化远程仓库

找到仓库路径的字段clone_url或者

1
2
3
4
git remote add origin clone_url
//或者使用ssh,避免输入密码
//git remote add origin ssh_url
git push origin master

删除远程仓库

1
2
3
4
5
6
7
githubDelRepo(){
    if [[ $# != 2 ]] ; then
        echo "Needs username and repo-name as args 1 and 2 respectively."
    else
        curl -X DELETE -u "${1}" https://api.github.com/repos/"${1}"/"${2}"
    fi
}