1

我不小心拉下了一个与本地分支同名的分支

* 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. 如何在不发生命名冲突的情况下拉下分支?

4

1 回答 1

7

您稍微误解了您的情况:

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

    git checkout -b mylocalname --track origin/feature
    

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

于 2012-12-20T19:39:21.403 回答