1. ホーム
  2. ギット

[解決済み】gitのfetchで全てのブランチが取得されない

2022-03-30 03:07:46

質問

あるリポジトリをクローンしたところ、他の人が新しいブランチを作成したので、それに取りかかりたいと思います。 マニュアルを読みましたが、とても簡単そうです。 不思議とうまくいきませんし、私が見つけたすべての投稿は、私が正しいことをしていることを示唆しています。 だから、私は非難に身をさらすことにします。 に違いない。 が明らかにおかしい。

正しい動作 と思われる となります。

git fetch
git branch -a
* master
  remotes/origin/HEAD --> origin/master
  remotes/origin/master
git checkout -b dev-gml origin/dev-gml

この時点で問題が発生します。 git fetch dev-gmlのリモートブランチが見えません。 なぜでしょうか? リポジトリを新しくクローンすると、そこにあるので、確かにリモートブランチは存在します。

$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev-gml
  remotes/origin/master

試してみた git update , git pull , git fetch --all , git pretty-please を、可能な限りの順列で...

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

を確認すると、問題がわかります。 remote.origin.fetch 設定

(で始まる行は $ は、私が入力したコマンドのbashプロンプトです。他の行は結果の出力です)

$ git config --get remote.origin.fetch
+refs/heads/master:refs/remotes/origin/master

ご覧の通り、私の場合、リモートはmasterブランチのみを取得するように設定されていました。結果を確認するための2番目のコマンドを含め、以下のように修正しました。

$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git config --get remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*

ワイルドカードの * は、もちろんそのパスの下のすべてを意味します。

残念ながら、私は このコメント 試行錯誤の末、答えを見つけた後。