web-dev-qa-db-ja.com

リモートのGitブランチをチェックアウトするにはどうすればいいですか?

誰かがgit Push Origin testとともにtestというブランチを共有リポジトリにプッシュしました。ブランチはgit branch -rで見ることができます。

今、私はリモートのtestブランチをチェックしようとしています。

私はもう試した:

  • 何もしないgit checkout test

  • git checkout Origin/test* (no branch)を与えます。混乱しています。どのようにして "no branch"になることができますか?

リモートのGitブランチをチェックアウトするにはどうすればいいですか?

6088
Juri Glass

更新

Jakubの答え 実際にこれを改善しています。 Gitバージョン≧1.6.6では、1つのリモコンだけで、次のことができます。

git fetch
git checkout test

ユーザーmasukomiがコメントで指摘しているように、あなたが複数のリモートを持っているとgit checkout testは現代のgitでは動かないでしょう。この場合は

git checkout -b test <name of remote>/test

または速記

git checkout -t <name of remote>/test

古い答え

リモートブランチでローカルに作業を開始する前に、以下の回答で示されているようにそれを取得する必要があります。

ブランチを取得するには、単にあなたがする必要があります:

git fetch Origin

これはあなたのために全てのリモートブランチを取得します。あなたはチェックアウトのために利用可能な枝を見ることができます:

git branch -v -a

リモートブランチが手元にある状態で、興味のあるブランチをチェックアウトし、ローカルの作業コピーを手に入れる必要があります。

git checkout -b test Origin/test
8411
hallski

補足:現代のGit(> = 1.6.6 )では、あなたはただ使うことができます

git checkout test

( 'Origin'/test 'ではなく' test 'であることに注意してください)アップストリームがリモートトラッキングブランチ' Origin/test 'の場合、魔法の _ dwim _ - meryを実行してローカルブランチ' test 'を作成します。 '。


git branchの出力の* (no branch)は、いわゆる "detached HEAD"状態(HEADが直接コミットを指しており、ローカルブランチへのシンボリックリファレンスではない)で、名前のないブランチにいることを意味します。この名前のないブランチでコミットをした場合は、現在のコミットからいつでもローカルブランチを作成できます。

git checkout -b test HEAD
1190
Jakub Narębski

この場合、おそらくリモートのtestブランチを追跡しているローカルのtestブランチを作成したいでしょう。

$ git branch test Origin/test

以前のバージョンのgitでは、明示的な--trackオプションが必要でしたが、リモートブランチから分岐する場合は、これがデフォルトになりました。

528
ndim

受け入れられた答え あなたのために働いていないのですか?

最初に選択された答えは技術的には 正しい ですが、まだすべてのオブジェクトを取得しておらず、リモートリポジトリから参照していない可能性があります。その場合は、次のエラーが表示されます。

$ git checkout -b remote_branch Origin/remote_branch

fatal:git checkout:パスの更新はブランチの切り替えと互換性がありません。
コミットとして解決できない 'Origin/remote_branch'をチェックアウトするつもりでしたか?

溶液

このメッセージを受け取った場合は、git fetch Originを実行する前に、まずgit checkout remote_branchを実行する必要があります。ここでOriginはリモートリポジトリの名前です。これが応答を含む完全な例です。

$ git fetch Origin
remote: Counting objects: 140, done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 69 (delta 36), reused 66 (delta 33)
Unpacking objects: 100% (69/69), done.
From https://github.com/githubuser/repo-name
   e6ef1e0..5029161  develop    -> Origin/develop
 * [new branch]      demo       -> Origin/demo
   d80f8d7..359eab0  master     -> Origin/master

$ git checkout demo
Branch demo set up to track remote branch demo from Origin.
Switched to a new branch 'demo'

ご覧のとおり、git fetch Originを実行すると、ローカルマシンで追跡するようにまだ設定されていないリモートブランチがすべて取得されます。ここから、リモートブランチへの参照があるので、git checkout remote_branchを実行するだけでリモートトラッキングの利点が得られます。

439
Corey Ballou

私は上記の解決策を試しましたが、うまくいきませんでした。これを試して、それは動作します:

git fetch Origin 'remote_branch':'local_branch_name'

これはリモートブランチを取得し、local_branch_nameという名前の新しいローカルブランチを作成し(まだ存在していない場合)、その中にあるリモートブランチを追跡します。

226
Sahil kalra

Originという名前のリモートでは _ dwim _ になります( documentation ):

$ git checkout -t remote_name/remote_branch

新しいリモコンを追加するには、まず次の手順を実行する必要があります。

$ git remote add remote_name location_of_remote
$ git fetch remote_name

1つ目はGitにリモートが存在することを伝え、2つ目はコミットを受けます。

105
tacaswell

つかいます:

git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

私の良性の場合、他の答えは現代のGitではうまくいきません。リモートブランチが新しい場合は、最初にプルする必要があるかもしれませんが、私はそのケースをチェックしていません。

100
matanster

_ ok _ 、答えは簡単です...あなたは基本的に枝を見ますが、あなたはまだローカルコピーを持っていません!...

あなたはブランチをfetchする必要があります...

あなたは単純に取得してブランチにチェックアウトすることができます、それをするために下記の一行コマンドを使用してください:

git fetch && git checkout test

以下の画像も、違いを共有するために作成したものです。fetchのしくみとpullとの違いについて説明します。

git fetch

78
Alireza

Gitリポジトリを複製するには、

git clone <either ssh url /http url>

上記のコマンドはすべてのブランチをチェックアウトしますが、masterブランチだけが初期化されます。他のブランチをチェックアウトしたい場合は、次のようにします。

git checkout -t Origin/future_branch (for example)

このコマンドはリモートブランチをチェックアウトし、あなたのローカルブランチ名はリモートブランチと同じになります。

チェックアウト時にローカルブランチ名を上書きしたい場合は、

git checkout -t -b enhancement Origin/future_branch

これであなたのローカルブランチ名はenhancementですが、あなたのリモートブランチ名はfuture_branchです。

ドキュメンテーション

52
Madhan Ayyasamy

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

git fetch remote
git checkout --track -b local_branch_name Origin/branch_name

または

git fetch
git checkout -b local_branch_name Origin/branch_name
34
uma

まず、あなたがする必要があります:

git fetch#ブランチ名がわからない場合

git fetch Origin branch_name

次に、次のようにしてリモートブランチをローカルにチェックアウトできます。

git checkout -b branch_name Origin/branch_name

-bは選択したリモートブランチから指定した名前で新しいブランチを作成します。

28

コマンド

git fetch --all
git checkout -b <ur_new_local_branch_name> Origin/<Remote_Branch_Name>

等しい

 git fetch --all

その後

 git checkout -b fixes_for_dev Origin/development

どちらもdevelopmentからlatest fixes_for_devを作成します

27
sreekumar

次のコマンドを使います。

git checkout --track Origin/other_remote_branch
25
priyankvex

ブランチがOriginリモート以外のものにある場合は、次のようにします。

$ git fetch
$ git checkout -b second/next upstream/next

これはnextリモートのupstreamブランチをsecond/nextというローカルブランチにチェックインします。つまり、nextという名前のローカルブランチがすでにある場合、それは競合しません。

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
23
Kris

git branch -rは、そのブランチ名がGitのローカルブランチリストにないため、オブジェクト名が無効であると言っています。以下のコマンドでOriginのローカルブランチリストを更新してください。

git remote update

それからリモートブランチをもう一度チェックしてみてください。

これは私のために働きました。

私はgit fetch all remoteブランチを引っ張ってくると信じています。

16
webdevguy

これらの答えのどれも私のために働きませんでした。これはうまくいった:

git checkout -b feature/branch remotes/Origin/feature/branch

15
brianyang

git fetch && git checkout your-branch-name

15

リモートブランチの名前を指定してgit checkoutを実行するだけです。 Gitは 自動的に - リモートブランチを追跡するローカルブランチを作成します。

git fetch
git checkout test

しかし、そのブランチ名が複数のリモートで見つかった場合、Gitはどちらを使うべきかわからないので機能しません。その場合は、次のどちらかを使用できます。

git checkout --track Origin/test

または

git checkout -b test Origin/test

2.19 では、Gitは checkout.defaultRemote という設定を学びました。

13
Eugene Yarmash

上記のすべての提案に対してerror: pathspec 'desired-branch' did not match any file(s) known to git.を見ている状況で立ち往生していました。私はgitバージョン1.8.3.1を使っています。

だから 私のために働いた

git fetch Origin desired-branch
git checkout -b desired-branch FETCH_HEAD

その背後にある説明は、リモートブランチを取得するときにFETCH_HEADに取得されたことに気付いたことです。

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
13
alisa

git remote show <Origin name>コマンドはすべてのブランチ(追跡されていないブランチを含む)をリストします。それからあなたはあなたが取得する必要があるリモートブランチ名を見つけることができます。

例:

$ git remote show Origin

リモートブランチを取得するには、次の手順に従います。

git fetch <Origin name> <remote branch name>:<local branch name>
git checkout <local branch name > (local branch name should the name that you given fetching)

例:

$ git fetch Origin test:test
$ git checkout test
10
Thushan

他の人やギャルが解決策を出しますが、多分私はなぜあなたに言うことができます。

何もしないgit checkoutテスト

Does nothingdoesn't workと同じではないので、端末に 'git checkout test'と入力してEnterキーを押してもメッセージは表示されず、エラーも発生しません。私は正しいですか?

答えが 'はい'であるならば、私はあなたに原因を言うことができます。

原因は、作業ツリーに 'test'という名前のファイル(またはフォルダー)があることです。

git checkout xxxを解析すると、

  1. Gitは最初はxxxをブランチ名として扱いますが、testという名前のブランチはありません。
  2. それからGitはxxxがパスであると考え、幸いなことに(または残念ながら)testという名前のファイルがあります。そのため、git checkout xxxxxxファイル内のすべての変更を破棄することを意味します。
  3. xxxという名前のファイルもない場合、Gitはいくつかの規則に従ってxxxを作成しようとします。規則の1つは、remotes/Origin/xxxが存在する場合はxxxという名前のブランチを作成することです。
8
oldman

新しく作成されたブランチを取得する

git fetch

別のブランチに切り替えるには

git checkout BranchName
7
Hasib Kamal

次のBashスクリプトを使って、すべてのリモートブランチの追跡を始めることができます。

#!/bin/bash
git fetch --all
for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`
  do git branch -f --track "$branch" "Origin/$branch"
done

これも単一行バージョンです。

git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/Origin\///'`; do git branch --track "$branch" "Origin/$branch" ; done ;
6
OzzyCzech

リモートからフェッチしてブランチをチェックアウトします。

git fetch <remote_name> && git checkout <branch_name> 

例えば。:

git fetch Origin && gitチェックアウト機能/ XYZ-1234-Add-alerts

6
Pranav

fetchを使用して、すべてのリモートをプルします

   git fetch --all

リモートブランチをリストするには:

   git branch -r

すべてのブランチをリストするには

   git branch -l
   >>outpots like-
     * develop
       test
       master

ブランチをチェックアウト/変更するには

   git checkout master
2
Nasir Khan

リモートブランチの名前が特殊文字で始まっている場合は、checkoutコマンドでその名前を一重引用符で囲む必要があります。そうしないと、gitがどのブランチについて話しているのかわかりません。

たとえば、#9773という名前のリモートブランチをチェックアウトしようとしましたが、下の図に示すように、コマンドが正しく機能しませんでした。

enter image description here

なんらかの理由でシャープ記号(#)がそれに関係しているのではないかと思ったので、'#9773'よりも#9773のようにブランチ名を一重引用符で囲むようにしてもうまくいきました。

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

コマンドに従って空のフォルダを作成してください。それを入力して、このコマンドを使用します。

saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url
Cloning into 'iPhoneV1'...
remote: Counting objects: 34230, done.
remote: Compressing objects: 100% (24028/24028), done.
remote: Total 34230 (delta 22212), reused 15340 (delta 9324)
Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done.
Resolving deltas: 100% (22212/22212), done.
Checking connectivity... done.
saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/
saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery
Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from Origin.
Switched to a new branch '1_4_0_content_discovery'
1
Mehedi Hasan