意外地拉下了同名的分支

imr*_*ane 1 git branch branching-and-merging git-branch

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

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

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

git fetch origin
Run Code Online (Sandbox Code Playgroud)

然后尝试跟踪远程分支并得到以下错误

git checkout --track origin/feature
error: there are still refs under 'refs/heads/feature'
fatal: Failed to lock ref for update: Is a directory
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ial 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
    
    Run Code Online (Sandbox Code Playgroud)

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