0

コンピューターのローカル ブランチを別のブランチにリベースして台無しにしました。リベースしたかったのですが、リベースしたいブランチに切り替えず、結果としてめちゃくちゃになってしまいましたsomebranch。リベースの失敗を元に戻す方法がわかりませんでしたsomebranch(将来のために知っておくとよいと誰かが知っている場合) somebranch。何をしたかわかりませんが、それも台無しにしました。最終的に、削除されたローカル ブランチをリモート オリジンから取得して再作成するための正しいコマンドと思われるコマンドを見つけました。

git fetch origin somebranch:refs/remotes/somebranch
git checkout -b somebranch --track origin/somebranch


gitk では
、somebranch、remotes/somebranch、remotes/origin/somebranch の3 つがあることがわかります。

しかし、他のすべてのブランチには、ローカルと 1 つのリモートのみが表示されます。例:
someotherbranch、remotes/origin/someotherbranch

実行git for-each-refしたところ、ref/remotes/somebranch と ref/remotes/origin/somebranch の両方が同じコミットを指しています。

私の質問は、この 2 つの違いと、ref/remotes/somebranch を取り除く方法です。試してみgit update-ref -d remotes/somebranchましたが、うまくいきませんでした。

4

1 に答える 1

1

あなたはほとんどそれを持っていました。'refs'を追加するだけです:

git update-ref -d refs/remotes/somebranch

リポジトリのトップレベルで発行することで、それがなくなったことを確認できます。

ls .git/refs/remotes
于 2012-06-19T04:08:28.480 に答える