如何获取所有远程分支,"git fetch --all" 不起作用
How to fetch all remote branch, "git fetch --all" doesn't work
我已经浏览过关于类似问题的其他问题。
但是他们好像说答案是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
您还需要在本地创建提取的分支:
git fetch --all && git checkout A
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
mylocal
在这种情况下是 origin/A
。如果分支不存在,-b
参数将创建分支。您也可以只输入:git checkout A
will will auto-name the new branch.
我认为您真正需要的是 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
这应该可以解释您在本地看到的内容。
我已经浏览过关于类似问题的其他问题。
但是他们好像说答案是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
您还需要在本地创建提取的分支:
git fetch --all && git checkout A
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
mylocal
在这种情况下是 origin/A
。如果分支不存在,-b
参数将创建分支。您也可以只输入:git checkout A
will will auto-name the new branch.
我认为您真正需要的是 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
这应该可以解释您在本地看到的内容。