リポジトリのクローンを作成した後、誰かが新しいブランチを作成したので、作業を開始します。私はマニュアルを読んで、それは完全に簡単に思えます。奇妙なことに、それは機能しておらず、私が見つけたすべての投稿は、私が正しいことをしていることを示唆しています。 mustこれには明らかに問題があるので、私は暴行を受けます。
正しいアクションseems
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
ご覧のとおり、私の場合、リモートはマスターブランチのみをフェッチするように設定されています。結果を確認する2番目のコマンドを含め、以下のように修正しました。
$ git config remote.Origin.fetch "+refs/heads/*:refs/remotes/Origin/*"
$ git config --get remote.Origin.fetch
+refs/heads/*:refs/remotes/Origin/*
もちろん、ワイルドカード*
は、そのパスの下にあるすべてのものを意味します。
残念ながら、すでに掘り下げて、試行錯誤で答えを見つけた後で このコメント を見ました。
本日、レポでこの問題が発生しました。
最上位のソリューションによる+refs/heads/*:refs/remotes/Origin/*
の問題ではありませんでした。
症状は、フェッチするリモートブランチがあったにもかかわらず、git fetch Origin
またはgit fetch
が何もしないように見えることでした。
多くのことを試した後、Originのリモートを削除し、再作成しました。それはそれを修正したようです。理由がわからない。
削除:git remote rm Origin
git remote add Origin <git uri>
で再作成します
(新しい)リモートブランチをローカルブランチとして追跡するには:
git checkout -b <local branch> <remote>/<remote branch>
または(余分なremotes/
なしでは機能しない場合があります):
git checkout -b <local branch> remotes/<remote>/<remote branch>
編集:git remote update
またはgit remote update <remote>
を実行する必要があります。次に、git branch -r
を実行して、リモートブランチを一覧表示できます。
より具体的にするには、追跡ブランチを作成します。つまり、現在はリモートブランチを追跡しています。
git branch --track branch remote-branch
git branch --track exp remotes/Origin/experimental
その後、次のことができます
git branch # to see the remote tracking branch "exp" created .
その後、そのブランチで作業するには
git checkout branchname
git checkout exp
ブランチに変更を加えた後。リモートトラッキングブランチでgit fetchとgit mergeを実行して、以下のように変更をマージし、リモートブランチにプッシュできます。
git fetch Origin
git merge Origin/experimental
git Push Origin/experimental
これがどのように機能するか、あなたのアイデアと助けになることを願っています。
端末から書きます
git fetch --Prune.
正常に動作します。
これは、Palmの顔が原因である可能性があります。複数のクローンを切り替えると、存在しないブランチをプルしようとする間違ったソースツリーを簡単に見つけることができます。クローンの名前が類似している場合、またはリポジトリが複数の貢献者のそれぞれからの同じプロジェクトの別個のクローンである場合は簡単です。新しいgitクローンは、実際の問題がフォーカスや作業コンテキスト、あるいはその両方を失っているときに、明らかにその「問題」を解決するようです。
同じ問題が発生したため、使用する必要があります
git fetch
git Push Origin branch_name
git branch -r
これが同じ問題に直面している人を助けることを願っています
ここでは何も機能していないように思えたため、GitExtensionsリモートリポジトリに移動する必要がありました。そこで、2つのブランチにリモートリポジトリが構成されていないことがわかりました。調整後は次のようになります
ブランチnoExternal3
には、まだリモートリポジトリがないことが示されています。どのbashコマンドのコンボがそれを見つけたり調整したりするのかわからない。