GithubAPI-创建分支?

GithubAPI-创建分支?,git,github,Git,Github,v1、v2和v3的“Repos”文档中似乎缺少它……如何使用Github API创建分支?v3 API提到 URL中的ref必须格式化为头/分支,而不仅仅是分支 例如,为名为sc/featureA的分支获取数据的调用是: 创建引用 参数 完全限定引用的名称字符串(即:refs/heads/master)。如果它不是以“refs”开头并且至少有两个斜杠,它将被拒绝 要设置此引用的SHA1值的字符串 因此,应该可以通过在ref参数中命名一个新的“/heads”来创建一个新分支 使用的服务(发出HT

v1、v2和v3的“Repos”文档中似乎缺少它……如何使用Github API创建分支?

v3 API提到

URL中的ref必须格式化为头/分支,而不仅仅是分支

例如,为名为
sc/featureA
的分支获取数据的调用是:

创建引用 参数 完全限定引用的名称字符串(即:refs/heads/master)。如果它不是以“refs”开头并且至少有两个斜杠,它将被拒绝

要设置此引用的SHA1值的字符串

因此,应该可以通过在ref参数中命名一个新的“
/heads
”来创建一个新分支


使用的服务(发出HTTP请求)发送到

  • 找到要从中分支的修订版。
    在Github本身上或通过执行Hull的GET请求:

    https://api.github.com/repos///git/refs/heads

  • 复制修订哈希

  • 从Hull向
    发送POST请求https://api.github.com/repos///git/refs
    以下内容作为
    POST
    正文:

    {
        "ref": "refs/heads/<NEW-BRANCH-NAME>",
        "sha": "<HASH-TO-BRANCH-FROM>"
    }
    
    {
    “ref”:“ref/heads/”,
    “sha”:”
    }
    
    (显然,将
    替换为您希望新分支拥有的名称,将
    替换为您希望分支的修订版的哈希)

    您需要使用HTTP basic并填写Github凭据才能访问Github API

  • 按下发送按钮,您的分支将被创建


当我们在GitHub中创建用于创建分支的API时,这是所有学生的一个常见问题

{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3"
}
用于在Github中创建存储库期间解决此错误

  • 首先在中创建个人令牌

    Github=>setting=>developerOption=>generatePersonalToken

    在gitLogin bu Oauth期间,当您传递客户端id时 scope=repo(因为当您使用令牌或 (任何事情)

  • 之后:点击API(获取)

    https://api.github.com/repos///git/refs/heads

  • 你得到的回答是

    Response => {
    [
    {
        "ref": "refs/heads/<already present branch name for ref>",
        "node_id": "jkdhoOIHOO65464edg66464GNLNLnlnnlnlna==",
        "url": " https://api.github.com/repos/<your login name>/<Your Repository Name>/git/refs/heads/<already present branch name for ref>",
        "object": {
            "sha": "guDSGss85s1KBih546465kkbNNKKbkSGyjes56",
            "type": "commit",
            "url": " https://api.github.com/repos/<your login name>/<Your Repository Name>/git/commits/guDSGss85s1KBih546465kkbNNKKbkSGyjes56"
        }
    }
    ]
    }
    
    并以JSON格式发送数据,如下所示:

    {
        "ref": "refs/heads/<new branch name>",
        "sha": "4661616ikgohlKIKHBK4634GRGSD66"
    }
    
    {
    “ref”:“ref/heads/”,
    “sha”:“4661616IkgohlkhBK4634GRGSD66”
    }
    
    然后通过API在GITHUB中创建一个分支

    以及Delete分支只命中Delete(first)api的过程


  • 对于私人回购协议而言,这一点很难做到,因此回答了同样情况下的问题:

    对于私有回购,您需要通过“用户名”和“密码”或OAUTH对请求进行身份验证。以下步骤

  • 在github开发者设置中查找您帐户的个人访问令牌

  • 使用基本分支名称发出经过身份验证的GET请求

  • 从GET请求的响应中,使用
    jq
    过滤提交SHA

  • 将新的分支名称发布到github,并在Post请求中将SHA作为主体提交到github

  • 在行动中:

    TOKEN=<GITHUB-AUTH-TOKEN-VALUE>
    Previous_branch_name=ABC
    New_branch_name=XYZ
    
    SHA=$(curl -H "Authorization: token $TOKEN" https://api.github.com/repos/<REPO>/git/refs/heads/$Previous_branch_name | jq -r '.object.sha')
    
    curl -X POST -H "Authorization: token $TOKEN" \
    -d  "{\"ref\": \"refs/heads/$New_branch_name\",\"sha\": \"$SHA\"}" \ "https://api.github.com/repos/<REPO>/git/refs"
    
    令牌=
    以前的分支机构名称=ABC
    新分支机构名称=XYZ
    SHA=$(curl-H“授权:令牌$token”https://api.github.com/repos//git/refs/heads/$Previous_branch_name|jq-r'.object.sha')
    curl-X POST-H“授权:令牌$token”\
    -d“{\“ref\”:\“refs/heads/$New\u branch\u name\”,\“sha\”:\“$sha\”}”https://api.github.com/repos//git/refs"
    
    添加到@VonC-answer,这里是工作片段

    导入请求
    headers={'Authorization':“Token”+'YOUR_Token_HERE'}
    url=”https://api.github.com/repos///git/refs/heads"
    branchs=requests.get(url,headers=headers).json()
    分支,sha=分支[-1]['ref'],分支[-1]['object']['sha']
    res=requests.post('https://api.github.com/repos///git/refs,json={
    “ref”:“refs/heads/newbranch”,
    “沙”:沙
    },页眉=页眉)
    打印(存储内容)
    
    很抱歉,在我发布我的答案后,我意识到您想要分支回购。我正在尝试将其集成到管理应用程序中;假设我可以使用API来管理Github项目。参考资料,放在什么地方。谢谢我试过了(使用)。使用ref的分支名称(不要忘记将
    refs/heads/
    放在它前面)和commit to branch from的散列作为sha。发布后,我得到了201个“创建”回复。所以我可以验证这是否有效@太酷了!希望您不介意,我将您的添加内容编辑为一个实心块引号。@Aditya对于创建分支,它应该是相同的(除非分支API自我8年前编写此代码以来有所改进)。您的代码看起来不错,我正在尝试实现相同的效果。请您详细解释一下您的代码,好吗?当我执行代码时,它抛出一个错误,如下所述:注意:我能够获取SHA值。400错误请求错误请求您的浏览器发送了一个此服务器无法理解的请求。

    curl:(56)Recv失败:通过peerAssuming重置连接,显示您正在从shell或某些工具(如postman等)发出请求以处理该请求。如果您收到400个错误请求,请检查POST请求中的URL。要创建分支机构,您需要在POST请求中提供新分支机构名称和旧分支机构的SHA in数据。很好的实用说明。向上投票。
    {
      "message": "Not Found",
      "documentation_url": "https://developer.github.com/v3"
    }
    
                     or 
    
    Response => {
    [
    {
        "ref": "refs/heads/<already present branch name for ref>",
        "node_id": "jkdhoOIHOO65464edg66464GNLNLnlnnlnlna==",
        "url": " https://api.github.com/repos/<your login name>/<Your Repository Name>/git/refs/heads/<already present branch name for ref>",
        "object": {
            "sha": "guDSGss85s1KBih546465kkbNNKKbkSGyjes56",
            "type": "commit",
            "url": " https://api.github.com/repos/<your login name>/<Your Repository Name>/git/commits/guDSGss85s1KBih546465kkbNNKKbkSGyjes56"
        }
    }
    ]
    }
    
    https://api.github.com/repos/Bhupi2508/Test/git/refs...
    
    {
        "ref": "refs/heads/<new branch name>",
        "sha": "4661616ikgohlKIKHBK4634GRGSD66"
    }
    
    TOKEN=<GITHUB-AUTH-TOKEN-VALUE>
    Previous_branch_name=ABC
    New_branch_name=XYZ
    
    SHA=$(curl -H "Authorization: token $TOKEN" https://api.github.com/repos/<REPO>/git/refs/heads/$Previous_branch_name | jq -r '.object.sha')
    
    curl -X POST -H "Authorization: token $TOKEN" \
    -d  "{\"ref\": \"refs/heads/$New_branch_name\",\"sha\": \"$SHA\"}" \ "https://api.github.com/repos/<REPO>/git/refs"