意外拉下了同名的分支机构

时间:2012-12-20 19:09:53

标签: git branch git-branch branching-and-merging

我意外地拉下了一个与当地分支同名的分支

* 909a2b5 - (HEAD, feature/form) xxxx <imrane>
* c9d6bc5 - xxxx <imrane>
| * 6e96409 - (origin/feature) xxx <anandmv>
|/  
*   38e35d8 - (origin/develop, origin/HEAD, develop) xxx <imrane>

我已将所有更改提交到我的本地分支,然后运行

git fetch origin

然后尝试跟踪远程分支并出现以下错误

git checkout --track origin/feature
error: there are still refs under 'refs/heads/feature'
fatal: Failed to lock ref for update: Is a directory

问题:
1.如何在不丢失功能/形式的提交的情况下恢复 2.如何在没有命名冲突的情况下拉下分支?

1 个答案:

答案 0 :(得分:7)

你有点误解了你的情况:

  • 你不需要还原任何东西,你没有失去任何
  • 您的情况如下:您有一个名为feature/form的本地分支,该远程分支名为feature。现在这可能会让人感到惊讶,但这些名字相互冲突。 feature/form实际上创建了一个名为“feature”的文件夹,其中包含一个名为“form”的分支。因此,您无法创建名为“feature”的分支,作为具有该名称的文件夹已经存在。
  • git checkout --track origin/feature尝试创建名为“feature”的分支,这是不可能的,因此失败。
  • 关于问题2:嗯,只有 命名冲突 - 这两个分支不能在你的本地仓库中共存。但是可以在远程feature分支上工作而不删除或重命名您的本地feature/form分支 - 即使我不建议这样做,因为它很容易在那里混淆。< / LI>
  • 运行此命令:

    git checkout -b mylocalname --track origin/feature
    

    将生成一个名为mylocalname的本地分支,用于跟踪远程feature上的远程分支origin