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実際には、「form」という名前のブランチを含む「feature」という名前のフォルダーが作成されます。そのため、「feature」という名前のブランチは既に存在するため、その名前のブランチを作成することはできません。
  • git checkout --track origin/feature「feature」という名前のブランチを作成しようとしますが、これは不可能であるため、失敗します。
  • 質問2に関して:まあ、名前の衝突あります–これらの2つのブランチはローカルリポジトリに共存できません。ただし、ローカルブランチを削除したり、名前を変更したりせずに、リモートブランチで作業することはできます。ただし、そこで混乱しやすいため、あまりお勧めしません。featurefeature/form
  • このコマンドの実行:

    git checkout -b mylocalname --track origin/feature
    

    リモート上のmylocalnameリモートブランチを追跡するという名前のローカルブランチを生成します。featureorigin

于 2012-12-20T19:39:21.403 に答える