代码之家  ›  专栏  ›  技术社区  ›  Alex028502

我怎样才能推到一个还不存在的目的地呢?

git
  •  0
  • Alex028502  · 技术社区  · 6 年前

    我尝试使用哈希在Git服务器上创建一个新的分支,但也不在本地创建分支:

    $ git push origin HEAD^:new-branch
    error: unable to push to unqualified destination: new-branch
    The destination refspec neither matches an existing ref on the remote nor
    begins with refs/, and we are unable to guess a prefix based on the source ref.
    error: failed to push some refs to 'git@github:company/repo.git'
    

    当您强制推过现有分支时,这会起作用。我已经试过到达目的地了 refs/new-branch 上面写着:

    $ git push origin HEAD^:refs/new-branch
    Total 0 (delta 0), reused 0 (delta 0)
    remote: error: refusing to create funny ref 'refs/new-branch' remotely
    To github.com:company/repo.git
     ! [remote rejected]       HEAD^ -> refs/new-branch (funny refname)
    error: failed to push some refs to 'git@github.com:company/repo.git'
    

    对于尚未存在的目的地,其格式是什么?

    我要这样解决它

    $ git branch new-branch
    $ git push origin new-branch
    $ git push origin HEAD^:new-branch -f
    $ git branch -D new-branch
    

    或者像这样

    $ git branch new-branch HEAD^
    $ git push origin new-branch
    $ git branch -D new-branch
    

    但是,它应该知道如何在服务器上创建一个新的分支,而不需要在本地创建它。

    1 回复  |  直到 6 年前
        1
  •  2
  •   CB Bailey    6 年前

    分支是 refs/heads/... 不是简单的 refs/... 所以你应该推动 refs/heads/new-branch 在远程存储库上创建新的分支。

    git push origin HEAD^:refs/heads/new-branch