web-dev-qa-db-ja.com

すべてのリモートブランチをフェッチする方法、「gitfetch--all」が機能しない

私は同様の質問について他の質問を調べました。

しかし、彼らは答えはgit fetch --allだと言っているようです。

しかし、私の場合、それは機能しません。

これは私がそれのためにしたことです。

> git branch
* master

> git branch -r
Origin/master
Origin/A

> git fetch --all
> git branch 
* master        #still not updated

> git fetch Origin/A
fatal: 'Origin/A' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

> git fetch remotes/Origin/A
fatal: 'Origin/A' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

また、git pull --allも試しましたが、結果は同じです。

-------------------編集-------------------

> git pull --all
Already up-to-date.

> git branch 
* master              # I think it should show branch A also

> git remote show Origin
 HEAD branch: master
 Remote branches:
   A      tracked
   master tracked

-------------------編集-------------------

> git pull Origin A
 * branch            A       -> FETCH_HEAD
Already up-to-date.

> git branch 
* master                   # I think it should show barnch A also
9
SangminKim

git branchはローカルブランチのみを表示します。 git branch -rは、あなたが自分で見たように、リモートブランチを表示します。

git branch
*master

git branch -r
Origin/master
Origin/A

git fetch --allは、git branch -rと入力したときに表示されるリストを更新しますが、対応するローカルブランチは作成しません。

あなたがしたいのは、ブランチをチェックアウトすることです。これにより、リモートブランチのローカルコピーが作成され、アップストリームがリモートに設定されます。

git checkout -b mylocal Origin/A

git branch
master
*mylocal

git branch -r
Origin/master
Origin/A

この場合のmylocalOrigin/Aです。 -bパラメータは、作成後に新しいブランチに切り替わります。次のように入力することもできます。git checkout Aは、新しいブランチに自動的に名前を付けます。

11
noahnu

あなたが本当に探しているのはgit branch -aコマンド。すべてのローカルブランチとリモートブランチが表示されます。次に例を示します。

# Only show local branches
$ git branch
* master
  develop

# Only show remote branches
$ git branch -r
  Origin/HEAD -> Origin/master
  Origin/master
  Origin/develop
  Origin/foo

# Show both local and remote branches
$ git branch -a
* master
  develop
  remotes/Origin/HEAD -> Origin/master
  remotes/Origin/master
  remotes/Origin/develop
  remotes/Origin/foo

すべてのブランチがそこにあることに気付くでしょう-コマンドはローカルブランチとリモートブランチの両方を表示します。

fooブランチはリモートでのみ終了し、ローカルのfooブランチはありません。ローカルのfooブランチを作成するには、checkoutコマンドを使用します。

# Create a local 'foo' branch from the remote one
$ git checkout foo
Branch foo set up to track remote branch foo from Origin.
Switched to a new branch 'foo'

# Show both local and remote branches
$ git branch -a
* foo
  master
  develop
  remotes/Origin/HEAD -> Origin/master
  remotes/Origin/master
  remotes/Origin/develop
  remotes/Origin/foo

これはあなたがローカルで見ているものを説明するはずです。

1
nwinkler

フェッチされたブランチもローカルで作成する必要があります。

git fetch --all && git checkout A
1
Ivan