gitでブランチをダウンロードする方法は?


214

GitHubでホストされているプロジェクトがあります。1台のコンピューターにブランチを作成し、次のコマンドで変更をGitHubにプッシュしました。

git push origin branch-name

今、私は別のコンピューターを使用しています。そのブランチをダウンロードしたいと思います。だから私は試しました:

git pull origin branch-name

...しかし、これは私の新しいブランチの変更で私のマスターブランチを上書きすることでした。

既存のブランチを上書きせずにリモートブランチを適切にプルするには、何をする必要がありますか?

回答:


375

関連する質問のおかげで、リモートブランチを新しいローカルブランチとして「チェックアウト」し、新しいローカルブランチ名を指定する必要があることがわかりました。

git checkout -b newlocalbranchname origin/branch-name

またはあなたがすることができます:

git checkout -t origin/branch-name

後者は、リモートブランチを追跡するように設定されたブランチを作成します。


更新:私が最初にこの質問を投稿してから5年になります。私はたくさん学び、それ以来gitは改善されました。私の通常のワークフローは少し異なります。

リモートブランチをフェッチする場合は、次のコマンドを実行します。

git pull

これにより、すべてのリモートブランチがフェッチされ、現在のブランチがマージされます。次のような出力が表示されます。

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.

これでgitは私の新しいことを知っていmy-bugfix-branchます。このブランチに切り替えるには、次のコマンドを実行するだけです。

git checkout my-bugfix-branch

通常は、チェックアウトする前にブランチを作成する必要がありますが、新しいバージョンのgitでは、このリモートブランチのローカルコピーをチェックアウトする必要があることを知るのに十分スマートです。


私はGIT 1.7.2.5を使用しており、私のために機能したコマンドは次のとおりgit branch --track XX origin/XXです。コマンドでエラーが発生します。
dimitarvp

8
すべてのリモートブランチをダウンロードしていない場合、これは失敗する可能性があります。それらをプルダウンするには、「git remote update」を実行します。
Ben Walding、2012

1
実際には、 "git checkout branch-name"のように短くすることもできます。ブランチ名がリモート追跡ブランチと同じである場合(つまり、オリジン/ブランチ名)、自動的にローカル追跡ブランチになります。
DavidN

64

私のようなGit初心者のために、リモートリポジトリをダウンロードし、表示したいブランチに切り替えるための手順をいくつか紹介します。彼らはおそらく何らかの方法でGitを悪用しますが、それは私のために仕事をしました!:-)

コードをダウンロードするリポジトリのクローンを作成します(この例では、GithubでLRRestyプロジェクトを選択しました)。

$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty

この時点で使用しているブランチを確認します(マスターブランチである必要があります)。

$ git branch    
* master

必要なブランチをチェックしてください。私の場合は「arcified」と呼ばれています。

 $ git checkout -b arcified origin/arcified
 Branch arcified set up to track remote branch arcified from origin.
 Switched to a new branch 'arcified'

目的のブランチを使用していることを確認します。

$ git branch    
* arcified
  master

後でコードを再度更新する場合は、次を実行しますgit pull

$ git pull
Already up-to-date.

「おそらく何らかの方法でGitを悪用している」-いいえ、これはまさに正しいです。
Big McLargeHuge 2015

27

次のようにgit remoteを使用できます。

git fetch origin

次に、ローカルブランチをセットアップして、以下のようにリモートブランチを追跡します。

git branch --track [local-branch-name] origin/remote-branch-name

これで、local-branch-nameにリモートgithubブランチのコンテンツが含まれるようになります。

そのローカルブランチ名に切り替えて作業を開始できます:

git checkout [local-branch-name]

17

あなたが使うことができます:

git clone <url> --branch <branch>

ブランチのコンテンツのみを複製/ダウンロードします。

これは特に役立ちました。私のブランチの内容がマスターブランチとは完全に異なっていたからです(ただし、通常はそうではありません)。したがって、上記の他の人たちが挙げた提案は役に立たず、ブランチをチェックアウトしてgit pullを実行した後でも、マスターのコピーを取得することになります。

このコマンドは、ブランチのコンテンツを直接提供します。それは私のために働いた。


1
これが最良の答えです。シンプルで効果的。
derek

2
これは私にはうまくいかないようです。その名前のフォルダが既にあると言っています(もちろん、あります)
Jonathan Tuzman

1
@ジョナサン既存のブランチに新しいブランチを追加しません。新しいコピーを複製するためにのみ使用できます。リポジトリのクローンをまだ作成していないのに、なぜその名前のフォルダーがすでに存在しているのかわかりません。別の場所で複製してみてください。
Old Markus

既存のプロジェクトを新しいブランチで更新しません
Dazzle

16

git bashのgitからダウンロードする新しいマシンのフォルダーに移動します。

以下のコマンドを使用して、任意のブランチからコードをダウンロードします

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

それぞれのブランチコードをダウンロードします。


9

Gitクローンとレポ名のcd:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach

必要なブランチ(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'

そしてブランチを引っ張ります:

$ git pull
Already up-to-date.

ls:

$ ls
index.html      params.json     stylesheets


0

あなたが試すことができます

git fetch <remoteName> <branchName>

例えば:

git fetch origin MyRemoteBranch

-8

新しいディレクトリを作成し、代わりにクローンを作成します。

git clone(元のアドレス)(ブランチの名前)


3
Gitでブランチだけを複製することはできません。完全なリポジトリのクローンのみが実行できます。
アランハガイAlavi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.