【问题标题】:Git Push IssuesGit 推送问题
【发布时间】:2010-04-28 13:12:18
【问题描述】:

我有一个从 github 新克隆的存储库。如果你想试试这个地址是git://github.com/JoshClose/CsvHelper.git。我正在使用 tortoisegit,但如果需要,我会使用命令行来解决这个问题(我可能需要稍微握一下手)。

日志如下所示:

*   0.11
|
| * master origin/HEAD origin/master 0.10
| |
|-
|
*   0.9.1

我很确定在对 0.10 进行更改后,我没有将分支切换回 0.9.1 并在 0.11 上工作,但它看起来是这样的。

我想要做的是删除 0.11,切换到 0.10,对 0.11 进行我需要的更改,然后推送到 github。变化很小,但我想我可以将两者合并。

更改后的日志如下所示:

* (this has no label/branch name)
|
* master origin/HEAD origin/master 0.10
|
* 0.9

为什么 master 没有切换到我的新更改?

当我这样做并尝试推送到 github,或进行任何更改并推送时,我收到错误:

git.exe push    "origin" (no branch)

error: src refspec (no does not match any.
error: src refspec branch) does not match any.
error: failed to push some refs to 'git@github.com:JoshClose/CsvHelper.git'

我已尝试使用 pull them push 方法来解决此问题,但没有奏效。拉动说一切都是最新的。我也试过做 --force ,但得到同样的错误。

我认为我的新更改没有设置 master 存在问题。当我去推送到 github 时,我所在的分支说(没有分支)。

我能做些什么来解决这个问题?我准备删除存储库并重新开始。

【问题讨论】:

    标签: git


    【解决方案1】:

    您必须直接签出标签或 SHA1 提交,在此过程中生成 detached HEAD
    你所有的更新/修改都发生在这个未命名的分支引用中,由所说的“分离的 HEAD”。

    在推送之前,你应该创建(声明)一个分支,或者将 master 与 HEAD(快进)合并。

    git branch tmp
    git checkout master 
    git merge tmp # fast-forward master
    

    这应该给你:

    * (master,tmp)
    |
    * origin/HEAD (origin/master) 0.10
    |
    * 0.9
    

    【讨论】:

    • 我认为发生的事情是,在 tortoisegit 中,当您签出具有多个分支/标签的行时,即master origin/HEAD origin/master 0.10 它会签出标签。我明确地检查了主人,然后我的改变并没有发生在一个超然的头脑中。我能够根据您的建议修复我的本地存储库,但随后无法继续推进,所以我做了一个力量,这次它奏效了。
    • @VonC:你对问题的描述正是我深夜所做的......我记得我在我的 Mac OS 终端窗口中看到了与分离相关的东西哈哈哈......我开始玩 git 和 github。这很棒!由于获得了一个分离的 HEAD,我在 Xcode IDE 中推送时得到了一个(无分支)选项。现在一切都说得通了。执行了您提供的 3 行,事情又开始工作了 - 不再有没有分支选项。 :)
    • @Leniel:很高兴这个答案对您有所帮助:) 其他链接的答案详细说明了“分离的 HEAD”情况(stackoverflow.com/questions/2519031/…stackoverflow.com/questions/999907/…
    猜你喜欢
    • 2019-04-05
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多