zoukankan      html  css  js  c++  java
  • The destination you provided is not a full refname (i.e., starting with "refs/")

    $ git push v5 v5/hotfix/5.1:hotfix/5.1-quartz
    error: The destination you provided is not a full refname (i.e.,
    starting with "refs/"). We tried to guess what you meant by:

    - Looking for a ref that matches 'hotfix/5.1-quartz' on the remote side.
    - Checking if the <src> being pushed ('refs/remotes/v5/hotfix/5.1')
    is a ref in "refs/{heads,tags}/". If so we add a corresponding
    refs/{heads,tags}/ prefix on the remote side.

    Neither worked, so we gave up. You must fully qualify the ref.
    hint: The <src> part of the refspec is a commit object.
    hint: Did you mean to create a new branch by pushing to
    hint: 'refs/remotes/v5/hotfix/5.1:refs/heads/hotfix/5.1-quartz'?
    error: failed to push some refs to 'http://clu@172.31.212.149:8080/r/LISA/LISA_5.0.0.0.git'

     根据下面的链接,进行调整。明确告知是push branch

    $ git push v5 v5/hotfix/5.1:refs/heads/hotfix/5.1-quartz
    Total 0 (delta 0), reused 0 (delta 0)
    remote: Updating references: 100% (1/1)
    To http://172.31.212.149:8080/r/LISA/LISA_5.0.0.0.git
    * [new branch] v5/hotfix/5.1 -> hotfix/5.1-quartz

     
     https://stackoverflow.com/questions/48408059/git-pushing-commit-shows-error-unable-to-push-to-unqualified-destination

    TL;DR

    You probably wanted:

    $ git push remote 51447424149c671958a2f76ec1fefb135a5c2cea:refs/heads/WIP-51447424149c671958a2f76ec1fefb135a5c2cea

    to create a branch named WIP-51447424149c671958a2f76ec1fefb135a5c2cea. (Be sure you really want to create that name, as it's kind of unweildy. It's valid and there is no problem with it, it's just a heck of a thing to type in.)

    Long

    What Git is complaining about takes a little bit of explanation:

    • A branch name is a special form of reference.
    • A reference is a string starting with refs/. The familiar two kinds of references are branch names and tags. (More about this in just a moment.)
    • References can be abbreviated ... sometimes, but not always.
    • Sometimes (wherever it makes sense to Git) you can use a raw hash ID instead of a reference.
    • git push takes a refspec, which is a pair of references separated by a colon (and optionally the whole thing can be prefixed with a plus sign).

    What you're doing with git push is using the (very long) refspec 51447424149c671958a2f76ec1fefb135a5c2cea:WIP-51447424149c671958a2f76ec1fefb135a5c2cea. The left side of this refspec is the source reference, and the right side is the destination reference.

    The thing on the left side of the colon is clearly1 a hash ID. So this is making use of the special case where you can supply a hash ID instead of an actual reference (as long as that object actually exists in your Git repository).

    The thing on the right side of the colon, though, is a name, not a hash ID. This is good since this is one of the places that Git requires a name. But it's also a problem, because the name WIP-something does not start with refs/.

    Note that Git explicitly complains about that:

    The destination ... nor begins with refs/

    Before we get to the rest, let's mention branches and tags again. A branch name like master is short-hand for the reference refs/heads/master. A tag name like v1.2 is short-hand for the reference refs/tags/v1.2. Note that in both cases, these start with refs/. They go on to name which kind of reference we're using:

    • A branch name reference starts with refs/heads/.
    • A tag name reference starts with refs/tags/.

    In other words, when we say that branches and tags are forms of references, we're saying that given a reference, you can look at what comes right after refs/ and figure out what kind of reference it is: refs/heads/ means "branch" and refs/tags/ means "tag". (If you see refs/remotes/, that means it's a remote-tracking name; and there are yet more special words that go after refs/, such as notes/ for git notes.)

    We also said above that references can sometimes be abbreviated. That's the first part of what Git is complaining about here, though:

    ... neither matches an existing ref on the remote ...

    You're allowed to leave out the refs/heads/ part, and have the other Git—the one that your Git is pushing-to—figure out that master really means refs/heads/master. But this only works if they already have a refs/heads/master. If you're trying to create a new branch, you must tell the other Git: I'd like you to create a new branch.

    You do this by giving the full name of the reference: refs/heads/WIP-something, for instance. The fact that it starts with refs/heads/ tells the other Git: I'd like to create a branch name. If you send them refs/tags/WIP-something, you are telling them to create a new tag name.

    Anyway, this is why you're getting the rather long complaint, with its two parts: "neither ... nor". So the solution is to send them the full name.


    1What, isn't it obvious? :-) This reminds me of the professors who prove theorems by doing six transformations and then saying "the rest is obvious...".

  • 相关阅读:
    获取web应用路径 // "/" 表示class 根目录
    C++ Knowledge series Inheritance & RTTI & Exception Handling
    ATL
    GCC & Maker
    NoSQL(Not Only SQL)
    ECMAScript Regex
    C++ Knowledge series Conversion & Constructor & Destructor
    Cloud Computing
    C++ Knowledge series STL & Const
    Java Knowledge series 7
  • 原文地址:https://www.cnblogs.com/chucklu/p/10514734.html
Copyright © 2011-2022 走看看