• ..

JavaScript

    GitHub API で新しい参照を作る時に422(Unprocessable Entity)エラーが出た

    原因

    新しい参照を作る時に出た422(Unprocessable Entity)エラーは、ブランチ名をパスで見た時に親の名前でブランチを作ろうとしている為です。
    既にディレクトリがある場所に同名でファイルは作れないように、参照はディレクトリの構造で管理されているので同じように参照ファイルを作ることができません。

    再現

    git push origin master:parent/child
    # Total 0 (delta 0), reused 0 (delta 0)
    # To github.com:nju33/playground.git
    #  * [new branch]      master -> parent/child
    # 
    git push origin master:parent
    # Total 0 (delta 0), reused 0 (delta 0)
    # To github.com:nju33/playground.git
    #  ! [remote rejected] master -> parent (cannot lock ref 'refs/heads/parent': 'refs/heads/parent/child' exists; cannot create 'refs/heads/parent')
    # error: failed to push some refs to 'git@github.com:nju33/playground.git'
    ls -l .git/refs/remotes/origin
    # drwxr-xr-x  3 nju33  staff  102 Aug 29 14:33 parent
    echo a > .git/refs/remotes/origin/parent
    # An error occurred while redirecting file '.git/refs/remotes/origin/parent'
    # open: Is a directory