削除 - git リモートブランチ 取得




リモートのGitブランチをチェックアウトするにはどうしたらいいですか? (18)

誰かが、 git push origin test testと呼ばれるブランチを共有リポジトリにgit push origin testしました。 私はgit branch -r使ってブランチを見ることができます。

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

私はもう試した:

  • 何もしないgit checkout test

  • git checkout origin/test* (no branch)git checkout origin/testます。 どちらが紛らわしいですか。 どうすれば "枝なし"にすることができますか?

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


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

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

$ git checkout -b remote_branch origin/remote_branch

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

溶液

このメッセージが表示された場合は、最初にgit fetch origin実行する必要がありますgit 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を実行すれば、リモートトラッキングのメリットが得られます。


更新

実際に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 fetch origin

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

git branch -v -a

リモートブランチを手に入れたら、今興味を持っているブランチをチェックアウトして、ローカル作業コピーを作成する必要があります。

git checkout -b test origin/test

git branch -rは、そのブランチ名がGitのローカルブランチリストにないので、オブジェクト名が無効であると言います。 起点からのローカルブランチリストを次のもので更新します。

git remote update

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

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

私はgit fetchが元のポスターが望んでいたものではないすべての離れた枝で引っ張ってくると信じています。


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設定を学びました。これは、そのようなあいまいさを解決する際にリモートをデフォルトに指定します。


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

Sidenote:現代のGit(> = 1.6.6 )では、

git checkout test

魔法のDWIM -meryを実行してローカルブランチ 'test'を作成するための 'origin / test'ではなく 'test'であることに注意してください。

git branch出力の* (no branch)は、あなたが名前のないブランチ上にあることを意味し、いわゆる「分離HEAD」状態(HEADポイントは直接コミットし、あるブランチのシンボリックリファレンスではありません* (no branch)を意味します。 この名前のないブランチに対してコミットを行った場合は、常にローカルブランチをコミットすることができます:

git checkout -b test HEAD

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

git fetch

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

git checkout BranchName

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

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

または

git fetch
git checkout -b local_branch_name origin/branch_name

これは、リモートではない名前の由来( documentation )のDWIM行いdocumentation

$ git checkout -t remote_name/remote_branch

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

$ git remote add remote_name location_of_remote
$ git fetch remote_name

最初はリモートが存在することをGitに伝え、2番目はコミットを取得します。


これらの答えのどれも私のために働かなかった。 これはうまくいった:

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


まず、次のようにする必要があります。

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

git fetch origin branch_name

次に、ローカルブランチをローカルにチェックアウトすることができます。

git checkout -b branch_name origin/branch_name

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


コマンド

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を作成します


他の人や仲間が解決策を出してくれるかもしれませんが、なぜかその理由を教えてくれるかもしれません。

何もしないgit checkoutテスト

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

答えが「はい」の場合、原因を教えてもらえます。

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

git checkout xxx解析すると、

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

分岐がoriginリモート以外のものにある場合、私は次のことをしたい:

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

これにより、 upstreamリモートのnextブランチが、 second/nextというローカルブランチにチェックインされます。 これは、すでに次のローカルブランチがある場合、競合しないことを意味します。

$ git branch -a
* second/next
  remotes/origin/next
  remotes/upstream/next

次の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 ;

私は、 error: pathspec 'desired-branch' did not match any file(s) known to git.見ている状況で立ち往生しました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

私は次のコマンドを使用します:

git checkout --track origin/other_remote_branch

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

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'




remote-branch