如何使用git下载分支?

And*_*rew 197 git branch

我有一个在GitHub上托管的项目.我在一台计算机上创建了一个分支,然后将我的更改推送到GitHub:

git push origin branch-name
Run Code Online (Sandbox Code Playgroud)

现在我在另一台计算机上,我想下载该分支.所以我尝试过:

git pull origin branch-name
Run Code Online (Sandbox Code Playgroud)

...但所有这一切都是用我的新分支中的更改覆盖了我的主分支.

如何在不覆盖现有分支的情况下正确拉动远程分支需要做什么?

And*_*rew 349

感谢相关问题,我发现我需要将远程分支"签出"作为新的本地分支,并指定新的本地分支名称.

git checkout -b newlocalbranchname origin/branch-name
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做:

git checkout -t origin/branch-name
Run Code Online (Sandbox Code Playgroud)

后者将创建一个也设置为跟踪远程分支的分支.


更新:我最初发布此问题已有5年了.从那以后,我学到了很多东西,git也得到了改进.我现在常用的工作流程略有不同.

如果我想获取远程分支,我只需运行:

git pull
Run Code Online (Sandbox Code Playgroud)

这将获取所有远程分支并合并当前分支.它将显示如下所示的输出:

From github.com:andrewhavens/example-project
   dbd07ad..4316d29  master     -> origin/master
 * [new branch]      production -> origin/production
 * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.
Run Code Online (Sandbox Code Playgroud)

现在git知道我的新东西my-bugfix-branch.要切换到此分支,我可以简单地运行:

git checkout my-bugfix-branch
Run Code Online (Sandbox Code Playgroud)

通常情况下,我需要在检查之前创建分支,但在较新版本的git中,知道您想要签出此远程分支的本地副本是足够聪明的.

  • 如果您没有下载所有远程分支,则可能会失败.做"git远程更新"将它们拉下来. (7认同)
  • 是的,我试过了.与我的解决方案相比,这更容易. (2认同)

Dan*_*n J 62

对于像我这样的任何Git新手,下面是一些步骤,您可以按照下载远程存储库,然后切换到要查看的分支.他们可能会以某种方式滥用Git,但它为我做了这个工作!:-)

克隆要下载代码的存储库(在本例中我选择了Github上的LRResty项目):

$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty
Run Code Online (Sandbox Code Playgroud)

检查此时您正在使用的分支(它应该是主分支):

$ git branch    
* master
Run Code Online (Sandbox Code Playgroud)

检查你想要的分支,在我的例子中它被称为'arcified':

 $ git checkout -b arcified origin/arcified
 Branch arcified set up to track remote branch arcified from origin.
 Switched to a new branch 'arcified'
Run Code Online (Sandbox Code Playgroud)

确认您现在正在使用您想要的分支:

$ git branch    
* arcified
  master
Run Code Online (Sandbox Code Playgroud)

如果您想稍后再次更新代码,请运行git pull:

$ git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

  • “他们可能以某种方式滥用 Git” - 不,这是完全正确的。 (3认同)

ard*_*srk 22

你可以使用git remote:

git fetch origin
Run Code Online (Sandbox Code Playgroud)

然后设置一个本地分支来跟踪远程分支,如下所示:

git branch --track [local-branch-name] origin/remote-branch-name
Run Code Online (Sandbox Code Playgroud)

您现在可以在local-branch-name中拥有远程github分支的内容.

您可以切换到该local-branch-name并开始工作:

git checkout [local-branch-name]
Run Code Online (Sandbox Code Playgroud)


小智 17

导航到要从git bash上的git下载的新计算机上的文件夹.

使用以下命令从您喜欢的任何分支下载代码

git clone 'git ssh url' -b 'Branch Name'

它将下载相应的分支代码.


Old*_*kus 13

您可以使用 :

git clone <url> --branch <branch>

克隆/仅下载分支的内容.

这对我很有帮助,因为我的分支的内容与主分支完全不同(尽管通常情况并非如此).因此,上面其他人列出的建议对我没有帮助,即使在我检查了分支并做了一个git pull之后,我最终还是得到了主人的副本.

此命令将直接为您提供分支的内容.它对我有用.

  • 这似乎对我不起作用。它说已经有一个同名的文件夹(当然,有) (2认同)

Pab*_*iel 9

回购名称中的Git clone和cd:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach
Run Code Online (Sandbox Code Playgroud)

切换到我想要的分支(GitHub页面):

$ git checkout -b gh-pages origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'
Run Code Online (Sandbox Code Playgroud)

拉分支:

$ git pull
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

LS:

$ ls
index.html      params.json     stylesheets
Run Code Online (Sandbox Code Playgroud)


小智 9

$ git fetch

$ git checkout <branch>

git fetch将获取所有远程分支。git branch -r您可以使用(或)验证远程分支git branch -rv如果您没有同名的现有分支,则可以直接切换到该分支git checkout <branch>