我有一个master
和一个development
分支,都推到了GitHub 。我已经clone
d, pull
ed 和fetch
ed,但是我仍然无法获得除master
分支之外的任何东西。
我确定我错过了一些明显的东西,但是我已经阅读了手册,而且我一点也不开心。
$ git clone git://example.com/myproject
$ cd myproject
接下来,查看存储库中的本地分支:
$ git branch
* master
但是您的存储库中还隐藏着其他分支!你可以使用-a
标志看到这些:
$ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
如果您只想快速查看上游分支,可以直接查看:
$ git checkout origin/experimental
但是如果你想在那个分支上工作,你需要创建一个本地跟踪分支,它由以下内容自动完成:
$ git checkout experimental
你会看到的
Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'
最后一行引发了一些人:“新分支” - 是吧?它的真正含义是从索引中获取分支并在本地为您创建。 前一行实际上提供了更多信息,因为它告诉您分支正在设置为跟踪远程分支,这通常意味着 origin / branch_name 分支
现在,如果你看看当地的分支机构,你会看到:
$ git branch
* experimental
master
您实际上可以使用git remote
跟踪多个远程存储库。
$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
remotes/win32/master
remotes/win32/new-widgets
在这一点上,事情变得非常疯狂,所以运行gitk
来看看发生了什么:
$ gitk --all &
如果您想要一次获取许多远程分支,请执行以下操作:
$ git pull --all
现在,您可以根据需要签出任何分支,而无需访问远程存储库。
这个Bash脚本帮助了我:
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
git branch --track "${branch##*/}" "$branch"
done
它将为除 master 之外的所有远程分支创建跟踪分支(您可能从原始克隆命令获得)。我想你可能还需要做一个
git fetch --all
git pull --all
为了确定。
一个班轮 :
git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs
像往常一样:在我们知道复制 rm -rf Universe 之前在你的设置中进行测试单行的积分转到用户 cfi
$ git clone git://example.com/myproject
$ cd myproject
接下来,查看存储库中的本地分支:
$ git branch
* master
但是您的存储库中还隐藏着其他分支!您可以使用-a
标志查看它们:
$ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
如果您只想快速浏览上游分支机构,可以直接查看:
$ git checkout origin/experimental
但是,如果要在该分支上工作,则需要创建一个本地跟踪分支,该分支可以通过以下方式自动完成:
$ git checkout experimental
你会看到
Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'
最后一行引发了一些人:“新分支”- 是吗?这实际上意味着分支是从索引中提取的,并为您本地创建。 前一行实际上更具信息性,因为它告诉您正在设置分支以跟踪远程分支,这通常意味着 origin / branch_name 分支
现在,如果您查看本地分支机构,将会看到以下内容:
$ git branch
* experimental
master
实际上,您可以使用git remote
跟踪多个远程存储库。
$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
remotes/win32/master
remotes/win32/new-widgets
此时,事情变得非常疯狂,因此运行gitk
看看发生了什么:
$ gitk --all &
如果您要一次获取许多远程分支,请执行以下操作:
$ git pull --all
现在,您可以根据需要签出任何分支,而无需访问远程存储库。
这个Bash脚本帮助我:
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
git branch --track "${branch##*/}" "$branch"
done
它将为所有远程分支(主服务器除外)创建跟踪分支(您可能是从原始克隆命令获得的)。我认为您可能仍需要做一个
git fetch --all
git pull --all
为了确定。
一线 :
git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs
像往常一样:在复制 rm -rf Universe 之前,我们先在设置中进行测试一线信用归功于用户 CFI