[解決済み] Git で単一のブランチをクローンする方法を教えてください。
質問
私はプロジェクトのスケルトンを保存するために使用する 'skeleton'というローカルのGitリポジトリを持っています。このリポジトリには、さまざまな種類のプロジェクト用にいくつかのブランチがあります。
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
新しいプロジェクトの master ブランチをチェックアウトしたい場合は、次のようにします。
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
で、すべてが思い通りになりました。具体的には、新しい master ブランチはスケルトン master ブランチを指しており、私はプロジェクトの基本設定を変更するためにプッシュやプルを行うことができます。
しかし、うまくいかないのは、別のブランチをクローンしたい場合です。必要なブランチだけをプルするようにすることはできず、たとえば
rails
ブランチを作成し、新しいリポジトリには
master
ブランチにプッシュし、スケルトンリポジトリの
rails
ブランチがデフォルトで使用されます。
何か良い方法はないでしょうか?あるいは、これはGitが私に望んでいる構成方法ではないのかもしれません。複数のリポジトリを用意して、Ruby on Railsのスケルトンリポジトリがマスターのスケルトンリポジトリを追跡するようにしたらどうでしょうか。そして、個々のプロジェクトはRuby on Railsのスケルトンリポジトリをクローンします。
解決方法は?
注 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 であり、クローンされたブランチ自身を参照するものではありません)
で見ることができます。
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月)からシャロークローンがデータ転送(push/pull)に対応したので、そのオプションは今よりもっと便利になりました。
詳しくは"でご覧ください。
は
git clone --depth 1
(浅いクローン)は意外と便利?
"。
浅いクローンを元に戻す方法については、「"Undoing"」に詳細が記載されています。 シャロークローンからフルクローンへの変換 " (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年03月05日)
clone
: --recurse-submodule中に-single-branchを渡す。
<上
サインオフ:Emily Shaffer
Acked-by: ジェフ・キング
前回は、"を演奏。
git clone --recurse-submodules --single-branch
"は、スーパープロジェクトが1つのブランチしかクローンしていないにもかかわらず、サブモジュールがすべてのブランチをクローンする結果となりました。
パイプ
--single-branch
をサブモジュール・ヘルパー・フレームワークに通して、'
clone
' を後で実行します。
関連
-
[解決済み] git rebase: "error: cannot stat 'file': パーミッションが拒否されました"
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] 新しいローカルブランチをリモートの Git リポジトリにプッシュし、それを追跡するにはどうすればよいのでしょうか?
-
[解決済み] Git のリモートブランチを作成する方法を教えてください。
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み] [email protected] へのいくつかの参考文献のプッシュに失敗しました。
-
[解決済み] このリポジトリで別の git プロセスが実行されているようです。
-
[解決済み] 無効なVCSルートマッピング - 私のプロジェクトで3つのエラーが発生しました。
-
[解決済み] 短いGitバージョンのハッシュを取得する
-
[解決済み] git でディレクトリ階層が異なる 2 つのブランチをマージするには?
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] 特定のGitブランチをクローンする方法を教えてください。重複
-
[解決済み] 1つのブランチだけをクローンする[複製]。