gitを使用して特定のブランチを取得する


19

ザイリンクスwikiで説明されているように、gitを使用してmaster-nextブランチからソースコードをダウンロードしたい。

私はこれを試しました:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

これでも失敗しました:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

動作するコマンドは次のとおりです。

 git clone git://github.com/Xilinx/u-boot-xlnx.git

しかし、どのように私はこれが実際にフェッチすることを知っていますマスター-次の分岐ではなくマスターブランチを?gitを使用して特定のブランチを正しくフェッチするにはどうすればよいですか?

PuTTY経由でアクセスするRHEL 6を使用しています。

回答:


16

エラーメッセージが示すようにgit clone、gitリポジトリが必要です。そのようなパスにブランチの名前を「追加」することはできません。gitのブランチを参照してください。

単一のブランチをクローンできます(そして、その歴史です): git clone <url> --branch <branch> --single-branch

をご覧くださいgit help clone

ただし、実行したcloneコマンドを実行すると、リポジトリ全体のコピーが表示され、既存のブランチのgit branch詳細と、ブランチに関する詳細が表示されgit show-branchます。

で目的のブランチに切り替えますgit checkout branch-name

Pro Gitブックの最初の章(オンラインで入手可能)には、基本的なコマンドの詳細が記載されています。


「実行したクローンコマンドは、リポジトリ全体のコピーを提供しました。」リポジトリ全体は、両方のブランチがマージされたことを意味しますか?
user2799508 14

いいえ、それらはマージされません。ここで説明するように、gitのブランチはディレクトリ全体のコピーではありません。
レイアス14

「git clone -b master-next github.com/Xilinx/u-boot-xlnx.git」というのは間違っていますか?
user2799508

もうクローンは必要ありません。質問で示したコマンドは、すべてのブランチを含むリポジトリを提供しました。しかし、これも正しいです。git checkout master-nextクローン作成後に行うのと同じです。
レイアス14

13

このコマンドは機能するはずです:

$ git fetch origin [branch]

上記のコマンドは、リモートリポジトリからメタデータのみを取得し、ソースをマージしません。

ソースを取得してマージする場合、コマンドは次のようになります。

$ git pull origin [branch]

mergeコマンドを実行しているブランチに注意してください。ソースがマージされる場所になります。


あなたの答えは技術的には正しいですが、文法チェック/書き直しの恩恵を受けると思います。
サミレイン14

これはうまく動作します
nwgat 14年

4

gitリポジトリにはすべてのブランチが含まれます(ただし、圧縮されているため、サイズの問題はほとんどありません)。

したがって、正常に完了したようにプロジェクト全体を複製できます。これは、1つのブランチのみに関心がある場合でも、リポジトリを取得する標準的な方法です。

.git構造には、そのリポジトリで行われたすべてのブランチが含まれます。

特定のブランチを使用するにgit checkout [branch_name] はブランチが存在する場合、ファイルはローカルで使用可能になります(プロジェクトディレクトリ内の現在のファイル)。

git status 次に、どのブランチが現在のブランチであるかを表示します。次に例を示します。

Leiazによると、特定のブランチを複製できます。実際には、私はこれをやったことがないし、他の人がそれを使うのを見たことがありません。さらなる研究では、git 1.7.10(2012年4月)に追加された比較的新しいものであることがわかりました。ブランチの履歴を指していないタグは取得されません。例えば:

git clone -b master-next --single-branch git://github.com/Xilinx/

ここに画像の説明を入力してください ここで、「リンカー」アプリケーションのブランチをチェックアウトしています v3.0.10


1
私もそれをやったことがない、オプションを見たことを思い出した。余分なブランチのサイズが「安い」ため、めったに使用されないと思います。
レイアス14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.