にローカル Git リポジトリがあります~/local_repo
。そこにはいくつかのブランチがあります:
$ git branch
* master
rails
c
c++
ローカル リポジトリをクローンするには、次のようにします。
$ git clone ~/local_repo new_repo
Initialized empty Git repository in /home/username/new_repo/.git/
マスターnew_repo
ブランチはマスター ブランチを指しておりlocal_repo
、プッシュ/プルが可能です。
しかし、別のブランチをクローンすることができません。 必要なブランチ (例rails
) のみをプルして、新しいリポジトリに、デフォルトで のブランチにプッシュしてプルするブランチが含まれるようにしmaster
たいです。 これを実現するにはどうすればよいでしょうか。あるいは、マスターを追跡するのと同じような方法があるでしょうか。local_repo
rails
local_repo
local_repo
ベストアンサー1
注:git1.7.10(2012 年 4 月)実際には1 つのブランチのみをクローンできます。
# clone only the remote primary HEAD (default: origin/master)
git clone <url> --single-branch
# as in:
git clone <url> --branch <branch> --single-branch <folder>
注記:
<url>
リモートリポジトリのURLであり、クローンされたブランチを参照するものではありません。<folder>
リポジトリをクローンするローカルフォルダです
それをここで見ることができますt5500-fetch-pack.sh
:
test_expect_success 'single branch clone' ' git clone --single-branch "file://$(pwd)/." singlebranch '
これは、浅いクローンを実行するときに暗黙的に行われます。
これにより、git clone --depth 1
帯域幅を節約する最も簡単な方法になります。
また、Git 1.9.0 (2014 年 2 月) 以降、シャロー クローンではデータ転送 (プッシュ/プル) がサポートされるようになったため、このオプションはさらに便利になりました。
詳細については、「git clone --depth 1
(浅いクローン) は、想像以上に便利ですか?「」。
浅いクローンを元に戻す方法については、「浅いクローンを完全なクローンに変換する" (git 1.8.3+)
# unshallow the current branch git fetch --unshallow # for getting back all the branches (see Peter Cordes' comment) git config remote.origin.fetch refs/heads/*:refs/remotes/origin/* git fetch --unshallow
としてクリスコメント:
不足しているブランチを元に戻すための魔法の行は次の
--single-branch
とおりです (git v2.1.4):git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/* git fetch --unshallow
Git 2.26 (2020 年第 1 四半期) では、サブモジュールをクローンするときに、 " git clone --recurse-submodules --single-branch
" は同じ単一ブランチ オプションを使用するようになりました。
見るコミット 132f600、コミット 4731957(2020年2月21日)エミリー・シェイファー ( nasamuffin
)(合併者:
ジュニオ・C・ハマノ -- gitster
--でコミット b22db26、2020年3月5日)
clone
: --recurse-submodules 中に --single-branch を渡す署名者: エミリー・シェイファー
承認者: ジェフ・キング以前は、「
git clone --recurse-submodules --single-branch
」を実行すると、スーパープロジェクトが 1 つのブランチのみを複製したにもかかわらず、サブモジュールがすべてのブランチを複製していました。
--single-branch
サブモジュール ヘルパー フレームワークをパイプしてclone
、後で '' に到達できるようにします。