削除 - 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
解析すると、
- Gitは最初はブランチ名として
xxx
を調べますが、testという名前のブランチはありません。 - Gitは
xxx
がパスだと思っていますが、幸いにも(あるいは残念なことに)testという名前のファイルがあります。 ですから、git checkout xxx
は、xxx
ファイル内の変更を破棄することを意味します。 -
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'