7755

誰かがと呼ばれるブランチを共有リポジトリにプッシュtestgit push origin testました。でブランチを見ることができますgit branch -r

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

私はもう試した:

  • git checkout test何もしません

  • git checkout origin/test与える* (no branch)。これは紛らわしいです。どうすれば「ブランチなし」になれますか?

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

4

39 に答える 39

10584

答えは、1つのリモートリポジトリが構成されているか、複数あるかによって分かれています。これは、単一のリモートケースの場合、あいまいさが少なくなるため、一部のコマンドを簡略化できるためです。

Git 2.23用に更新:古いバージョンについては、最後のセクションを参照してください。

1つのリモコンで

どちらの場合も、リモートリポジトリからフェッチすることから始めて、最新の変更がすべてダウンロードされていることを確認します。

$ git fetch

これにより、すべてのリモートブランチがフェッチされます。チェックアウトに利用できるブランチは次のように表示されます。

$ git branch -v -a

...
remotes/origin/test

で始まるブランチremotes/*は、リモートブランチの読み取り専用コピーと考えることができます。ブランチで作業するには、ブランチからローカルブランチを作成する必要があります。これは、Gitコマンドswitch(Git 2.23以降)でリモートブランチの名前(リモート名を除く)を指定することで実行されます。

$ git switch test

この場合、Gitは--no-guess、同じ名前のリモートブランチをチェックアウトして追跡しようとしていると推測しています(で無効にできます)。

複数のリモートを使用

複数のリモートリポジトリが存在する場合は、リモートリポジトリに明示的に名前を付ける必要があります。

前と同じように、最新のリモート変更をフェッチすることから始めます。

$ git fetch origin

これにより、すべてのリモートブランチがフェッチされます。チェックアウトに利用できるブランチは次のように表示されます。

$ git branch -v -a

-cリモートブランチが手元にあるので、新しいローカルブランチを作成するために、関心のあるブランチをチェックアウトする必要があります。

$ git switch -c test origin/test

使用の詳細についてはgit switch

$ man git-switch

また、違いを共有し、作品をフェッチする方法と、プルするのがどのように異なるかを確認するために、以下の画像を作成しました。

ここに画像の説明を入力してください

Git2.23より前

git switchgit checkoutブランチを切り替えるために使用される前は、Git2.23で追加されました。

単一のリモートリポジトリのみでチェックアウトするには:

git checkout test

複数のリモートリポジトリが構成されている場合は、少し長くなります

git checkout -b test <name of remote>/test
于 2009-11-23T14:26:08.970 に答える
1400

補足:最新のGit(> = 1.6.6)では、

git checkout test

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


* (no branch)in出力は、名前のgit branchないブランチ、いわゆる「切り離されたHEAD」状態にあることを意味します(HEADは直接コミットを指し、一部のローカルブランチへのシンボリック参照ではありません)。この名前のないブランチでいくつかのコミットを行った場合は、現在のコミットからいつでもローカルブランチを作成できます。

git checkout -b test HEAD

コメントで提案されているより現代的なアプローチ:

@Dennis:git checkout <non-branch>たとえば、git checkout origin/testHEAD /名前のないブランチが分離され、git checkout testまたはgit checkout -b test origin/testローカルブランチtest(リモートトラッキングブランチがアップストリームorigin/testとして)になります–JakubNarębski2014年1月9日8:17

を重要視するgit checkout origin/test

于 2009-11-24T00:17:17.517 に答える
653

この場合、おそらくリモートブランチtestを追跡するローカルブランチを作成する必要があります。test

$ git branch test origin/test

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

ローカルブランチを作成しそれに切り替えるには、次を使用します。

$ git checkout -b test origin/test
于 2009-11-23T14:27:06.207 に答える
531

受け入れられた答えはあなたのために働いていませんか?

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

$ git checkout -b remote_branch origin/remote_branch

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

解決

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

$ 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、リモートトラッキングのメリットを得ることができます。

于 2012-12-07T20:52:10.790 に答える
332

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

git fetch origin 'remote_branch':'local_branch_name'

これにより、リモートブランチがフェッチされ、名前を使用して新しいローカルブランチ(まだ存在しない場合)が作成され、その中のリモートブランチがlocal_branch_name追跡されます。

于 2013-10-18T05:55:11.553 に答える
115

これにより、originという名前ではないリモートのDWIMが実行されます(ドキュメント)。

$ git checkout -t remote_name/remote_branch

新しいリモコンを追加するには、最初に次のことを行う必要があります。

$ git remote add remote_name location_of_remote
$ git fetch remote_name

1つ目はGitにリモートが存在することを通知し、2つ目はコミットを取得します。

于 2012-04-27T22:37:01.830 に答える
110

使用する:

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

私の良心的なケースでは、他の答えは現代のGitでは機能しません。リモートブランチが新しい場合は、最初にプルする必要があるかもしれませんが、その場合は確認していません。

于 2016-02-21T10:58:58.923 に答える
110

基本的にブランチが表示されますが、ローカルコピーはまだありません!...

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

単にフェッチしてからブランチにチェックアウトし、以下の1行のコマンドを使用してそれを行うことができます。

git fetch && git checkout test

また、違いを共有し、どのようにfetch機能するか、またそれがどのように異なるかを確認するために、以下の画像を作成しましたpull

git fetch

于 2017-09-05T14:20:27.137 に答える
70

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です。

于 2013-01-21T10:04:06.300 に答える
45

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

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

また

git fetch
git checkout -b local_branch_name origin/branch_name
于 2014-03-24T13:11:25.887 に答える
36

まず、次のことを行う必要があります。

git fetch#支店名がわからない場合

git fetch origin branch_name

次に、次の方法でローカルへのリモートブランチをチェックアウトできます。

git checkout -b branch_name origin/branch_name

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

于 2017-05-18T13:55:43.003 に答える
32

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
于 2018-10-10T21:52:44.113 に答える
31

次のコマンドを使用します。

git checkout --track origin/other_remote_branch
于 2017-09-06T14:41:22.890 に答える
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

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

于 2016-04-21T19:10:39.880 に答える
26

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

于 2018-09-13T12:21:19.177 に答える
24

ブランチがリモート以外のものにある場合、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
于 2013-03-01T10:00:18.810 に答える
23

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

git checkout -b feature/branch remotes/origin/feature/branch
于 2018-07-10T02:11:25.127 に答える
21

この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
于 2018-01-07T13:12:54.257 に答える
20

git fetch && git checkout your-branch-name

于 2014-03-26T07:00:14.277 に答える
17

git branch -rそのブランチ名がGitのローカルブランチリストにないため、オブジェクト名が無効であると言います。次のコマンドを使用して、ローカルブランチリストを元の場所から更新します。

git remote update

次に、リモートブランチをもう一度チェックアウトしてみてください。

これは私のために働いた。

私は、元のポスターが望んでいたものではない、すべてのgit fetchリモートブランチを引き込むと信じています。

于 2013-06-06T12:21:48.030 に答える
15

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

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

例えば:

git fetch origin&&gitチェックアウト機能/XYZ-1234-アラートの追加

于 2018-05-21T11:33:53.613 に答える
13

他の男やギャルが解決策を提供しますが、おそらく私はあなたに理由を言うことができます。

何もしないgitチェックアウトテスト

Does nothingは等しくないdoesn't workので、ターミナルで「git checkout test」と入力してEnterキーを押すと、メッセージは表示されず、エラーも発生しません。私は正しいですか?

答えが「はい」の場合、原因を教えてください。

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

git checkout xxx解析すると、

  1. Gitはxxx最初はブランチ名として見えますが、testという名前のブランチはありません。
  2. 次に、Gitxxxはパスであると考え、幸いなことに(または残念なことに)、testという名前のファイルがあります。つまり、ファイル内git checkout xxxの変更を破棄することを意味しxxxます。
  3. どちらにも名前の付いたファイルがない場合xxx、Gitはxxxいくつかのルールに従って作成を試みます。ルールの1つは、存在するxxx場合はという名前のブランチを作成することです。remotes/origin/xxx
于 2017-07-10T07:45:04.797 に答える
13

git checkout -b"Branch_name"[Bはローカルブランチの作成を意味します]

git branch --all

gitcheckout-b「あなたの支店名」

gitブランチ

git pullorigin"あなたのブランチ名"

マスターブランチから開発ブランチへのチェックアウトに成功

ここに画像の説明を入力してください

于 2019-12-10T06:29:46.890 に答える
12

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

git fetch

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

git checkout BranchName
于 2018-03-15T08:49:37.610 に答える
8

次の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 ;
于 2017-08-11T12:06:57.497 に答える
8

すべてのリモートブランチを取得するには、これを使用します:

git fetch --all

次に、ブランチにチェックアウトします。

git checkout test
于 2019-09-23T06:46:40.440 に答える
8

いつもしています: git fetch origin && git checkout --track origin/branch_name

于 2021-01-13T11:59:11.557 に答える
8

何らかの理由で、私はできませんでした:

$ git checkout -b branch-name origin/branch-name

エラーをスローしていました:

fatal: 'origin/branch-name' is not a commit and a branch 'branch-name' cannot be created from it

私がしなければなりませんでした:

$ git checkout -b branch-name commit-sha
于 2021-09-09T09:01:59.467 に答える
7

私たちにとって、remote.origin.fetch構成に問題があったようです。したがって、以外のリモートブランチは表示されなかったmasterため、git fetch [--all]役に立ちませんでした。それは確かに遠隔地にありましたが、どちらgit checkout mybranchも機能しませんでした。git checkout -b mybranch --track origin/mybranch

以前の構成はmasterフェッチのみが許可されていました:

$ git config --list | grep fetch
remote.origin.fetch=+refs/heads/master:refs/remotes/origin/master

*オリジンから新しい情報を使用してフェッチすることで修正します。

$ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

$ git fetch
...
 * [new branch] ...
...

git checkoutこれで、リモートブランチをローカルで実行できます。

この構成がローカルリポジトリでどのように終了したのかわかりません。

于 2019-09-20T10:20:18.163 に答える
7

これらの2つのコマンドを実行するだけで、準備が整います。

git checkout <branch-name>
git pull <remote> <branch-name>
于 2020-06-26T05:15:01.073 に答える
6

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

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

ここに画像の説明を入力してください

どういうわけか、シャープな記号(#)が何か関係があるのではないかと思ったので、ブランチ名を'#9773'単なるではなく一重引用符で囲んでみました#9773が、幸いうまくいきました。

git checkout -b '#9773' origin/'#9773'
于 2018-11-07T11:17:30.593 に答える
6

私はそれを使用しました:

git fetch origin
git reset --hard origin/{branchname}
于 2020-08-19T07:28:31.540 に答える
6

git fetch --all

すべてのリモートブランチをローカルにフェッチします

git checkout test

テストブランチに切り替えます

于 2021-06-12T11:17:27.470 に答える
6

TL; DRgit switchではなく、このリンクgit checkoutで詳細を使用

答えは時代遅れだと思います。Gitはcheckouttoswitchrestorenowのいくつかの機能を分割しました。

以下は私の要約です:

リモートブランチ用に何かを更新する場合は、リモートブランチを「追跡」するローカルブランチを作成する必要があります。ローカルで必要なものをすべて更新し、最後にリモートにプッシュできます。リポジトリのクローンを作成した直後にリモートブランチにチェックアウトすると、「detachedHEAD」ステータスとGitからの次のメッセージが表示される場合があります。

Note: switching to 'origin/asd'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at d3e1083 Update a

では、リモートブランチを追跡するためにローカルブランチを作成するにはどうすればよいですか?

リモートブランチを追跡するローカルブランチを作成するには、git checkout <remote branch name>またはを使用できますgit switch <remote branch name>。リモートブランチ名と同じ名前のファイルまたはフォルダがある場合、git checkoutエラーメッセージが出力されますが、git switch正常に機能します。

例:

  1. すべてのブランチを表示し、リモートブランチを追跡するためにローカルブランチを作成する必要remotes/origin/asdがあります。また、ファイル名もあります。asd
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/asd
  remotes/origin/ereres
  remotes/origin/master
  remotes/origin/zxc
$ ls                                
a  asd
  1. ファイル名はリモートブランチと同じです。git checkoutコマンドを使用してローカルブランチを作成し、リモートブランチを追跡すると、Gitはいくつかのエラーメッセージを出力するはずです。
$ git checkout asd  
fatal: 'asd' could be both a local file and a tracking branch.
Please use -- (and optionally --no-guess) to disambiguate
  1. 使用すれば動作しgit switchます!
$ git switch ereres  
Branch 'ereres' set up to track remote branch 'ereres' from 'origin'.
Switched to a new branch 'ereres'

$ git branch -vv
* ereres 3895036 [origin/ereres] Update a
  master f9e24a9 [origin/master] Merge branch 'master' of 
于 2021-09-16T03:04:32.720 に答える
5

誰も最も簡単な方法を提案していないように思えます(または、これが「方法」であると考えるにはあまりにも愚かです)。しかしとにかく、あなたはこれを試しましたか?

$ git pull origin remoteBranchName
$ git switch remoteBranchName

これは同じ場合に機能しました(最後のプルリクエストの後にリモートで作成されたブランチ)。

于 2022-01-13T20:05:26.907 に答える
3

fetchすべてのリモコンを引っ張るのに使用します

   git fetch --all

リモートブランチを一覧表示するには:

   git branch -r

すべてのブランチを一覧表示するには

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

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

   git checkout master
于 2019-05-24T08:51:32.353 に答える
2

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

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'
于 2016-01-01T10:31:09.137 に答える
1

たとえば、次のような多くの選択肢があります。

  • 代替案1:

    git fetch && git checkout test
    

    これが最も簡単な方法です。

  • 代替案2:

    git fetch
    git checkout test
    

    同じですが、2回のスティープです。

于 2019-10-30T10:56:35.443 に答える
1

testローカルに新しいブランチを追加して、次を使用できます。

git branch --set-upstream-to=origin/test test
于 2020-09-19T02:57:52.457 に答える