web-dev-qa-db-ja.com

特定のGitブランチを複製する方法

Git cloneは現在のリモートブランチをローカルにコピーするように振舞います。

リモートリポジトリのブランチを切り替えずに自分で特定のブランチを複製する方法はありますか?

2484
Scud

多くの人が好む その他の答え もご覧ください。

また、大多数の怒っているコメンターやダウン投票者とは異なり、必ず違いを理解しておくことをお勧めします。違いは:git clone --branch <branchname> urlを呼び出すことで、 all ブランチをフェッチしてチェックアウトすることです。たとえば、リポジトリに5kBのドキュメントまたはWikiブランチと5GBのデータブランチがあるとします。そして、あなたがあなたのフロントページを編集したい時はいつでも、あなたは5GBのデータのクローンを作成することになるかもしれません。

繰り返しますが、これはgit clone --branchがそれを達成する方法ではないということではありません。特定のブランチのクローンを作成することを求めているときに、 always を達成したいということではありません。

今日のgitを念頭に置いて、今日書く答えは次のようになります。

git clone --single-branch --branch <branchname> Host:/dir.git

下記の元の答えを書いている時点で、gitは--single-branchオプションを持っていませんでしたが、怒っている蜂を完全に満足させるためにそれを保存しましょう。

コピーパスタにとても嫌われた答えはこれでした:

git init
git remote add -t refspec remotename Host:/dir.git
git fetch
git clone -b <branch> <remote_repo>

例:

git clone -b my-branch [email protected]:user/myproject.git

Git 1.7.10以降では、すべてのブランチが取得されないように--single-branchを追加してください。例、OpenCV 2.4ブランチの場合:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
7212

他のブランチをフェッチするブランチwithoutを複製するには:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f Origin $REMOTE_REPO
git checkout $BRANCH
232
Edmar Miyake

これはそれをするための本当に簡単な方法です:)

リポジトリを複製する

git clone <repository_url>

すべての枝を一覧表示する

git branch -a 

必要なブランチをチェックアウトする

git checkout <name_of_branch>
230
superlogical
git checkout -b <branch-name> <Origin/branch_name>

例えば私の場合は:

 git branch -a
* master
  Origin/HEAD
  Origin/enum-account-number
  Origin/master
  Origin/rel_table_play
  Origin/sugarfield_customer_number_show_c

私のenum-account-numberブランチに基づいて新しいブランチを作成するには、次のようにします。

git checkout -b enum-account-number Origin/enum-account-number

あなたがリターンをヒットした後、次のことが起こります:

Branch enum-account-number set up to track remote branch refs/remotes/Origin/enum-account-number.
Switched to a new branch "enum-account-number

81
dkinzer

その名前でローカルシステムにブランチを作成します。例えば "branch-05142011" という名前のブランチを取得したいとします。

git branch branch-05142011 Origin/branch-05142011

「Branch branch-05142011がOriginからのリモートブランチbranch-05142011を追跡するように設定されています。」のようなメッセージが表示されます。

今ちょうど以下のようにブランチをチェックアウトして、あなたはコードを持っています -
git checkout branch-05142011

23
PlanetUnknown
git --branch <branchname> <url>

しかしbash補完はこのキーを取得しません:--branch

楽しい。

15
savgur