1. ホーム
  2. git

[解決済み] git push: refs/heads/my/subbranch は存在するが、作成できない。

2022-06-25 17:31:23

質問

サーバー上のレポにサブサブフォルダを作成することはできないのでしょうか?

そうすると

git push origin dev/master 

すべての作業を見つける

しかし、もし私が

git push origin dev/sub/master

こんな感じです。

error: 'refs/heads/dev/sub' exists; cannot create 'refs/heads/dev/sub/master'

で確認したところ git branch -r とsshで直接確認したところ、dev/subフォルダは既に作成されていませんでした。

どうしたのでしょうか?

どのように解決するのですか?

これは フォルダー が存在し、それは ブランチ . (まあ、どこかにフォルダ/ディレクトリが関係しているかもしれませんし、参照が "packed" になってディレクトリ内のファイルとして存在しなくなるので、そうではないかもしれません)。

  • もしブランチが b という名前のブランチが存在しない場合 b/anything という名前のブランチは作成できません。
  • 同様に、もしブランチ dev/b が存在する場合 dev/b/c は作成できません。

これは git の内部的な制限です。 この特定のケースでは、リモート origin という名前のブランチがあります。 dev/sub という名前のブランチがあります (自分が持っているかどうかに関係なく、重要なのはリモートが持っているかどうかです)。 作成するためには origin という名前のブランチを作成します。 dev/sub/master という名前のブランチを削除する必要があります。 dev/sub にある origin :

git push origin :dev/sub

(もちろん、このブランチを削除すると、向こうの重要なものが削除される可能性がありますから、自分が何をしているのかをよく理解しておいてください。 一般的には、次のようにするとよいでしょう。 git fetch origin をキャプチャし、その dev/sub を自分の origin/dev/sub . という名前のローカルブランチを作成することができます。 dev/renamed-sub という名前のローカルブランチを作成し、同じコミットを指して dev/renamed-sub をリモートで作成し、リモートの dev/sub を削除し、次に dev/sub/master をリモートで作成します)。


もし、リモートでログインできる場合 (そのシステムは origin がホストされているシステム) にログインできるのであれば、リモートでリポジトリに入り、単にローカルの dev/sub ブランチの名前を変更するだけです。 (以下のコメントから、私はあそこに壊れた自動デプロイスクリプトがあるのではないかと思っています。 しかし、私はここで推測しているだけです)。