Git 不小心拉下了同名的树枝

Git 不小心拉下了同名的树枝,git,branch,git-branch,branching-and-merging,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> 然后尝试跟踪远程分支,并得到以下

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

* 909a2b5 - (HEAD, feature/form) xxxx <imrane>
* c9d6bc5 - xxxx <imrane>
| * 6e96409 - (origin/feature) xxx <anandmv>
|/  
*   38e35d8 - (origin/develop, origin/HEAD, develop) xxx <imrane>
然后尝试跟踪远程分支,并得到以下错误

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

您对您的情况有点误解:

  • 你不需要还原任何东西,你没有丢失任何东西
  • 您的情况如下:您有一个名为
    feature/form
    的本地分支,远程分支有一个名为
    feature
    的分支。现在这可能会让人惊讶,但这些名称相互冲突
    feature/form
    实际上创建了一个名为“feature”的文件夹,其中包含一个名为“form”的分支。因此,您无法创建一个名为“feature”的分支,因为具有该名称的文件夹已经存在
  • git checkout——跟踪原点/feature
    尝试创建名为“feature”的分支,这是不可能的,因此失败
  • 关于问题2:嗯,只是命名冲突——这两个分支不能在本地repo中共存。但是您可以使用远程
    功能
    分支,而无需删除或重命名本地
    功能/表单
    分支,尽管我不建议这样做,因为很容易获得配置在那里用过
  • 运行此命令:

    git checkout -b mylocalname --track origin/feature
    
    将生成名为
    mylocalname
    的本地分支,该分支跟踪远程
    源站上的远程分支
    功能


    • 您对自己的处境有点误解:

      • 你不需要还原任何东西,你没有丢失任何东西
      • 您的情况如下:您有一个名为
        feature/form
        的本地分支,远程分支有一个名为
        feature
        的分支。现在这可能会让人吃惊,但这些名称冲突。
        feature/form
        实际上创建了一个名为“feature”的文件夹,其中有一个名为“form”的分支因此,您无法创建名为“feature”的分支,因为已存在同名文件夹
      • git checkout——跟踪原点/feature
        尝试创建名为“feature”的分支,这是不可能的,因此失败
      • 关于问题2:嗯,只是命名冲突——这两个分支不能在本地repo中共存。但是您可以使用远程
        功能
        分支,而无需删除或重命名本地
        功能/表单
        分支,尽管我不建议这样做,因为很容易获得配置在那里用过
      • 运行此命令:

        git checkout -b mylocalname --track origin/feature
        
        将生成名为
        mylocalname
        的本地分支,该分支跟踪远程
        源站上的远程分支
        功能