GitとMercurialを使った部分的なクローン
質問
Git や Mercurial で、一つのブランチ(あるいは指定したコミット)のみをクローンすることは可能でしょうか。つまり、中央のレポをクローンしたいのですが、巨大なので、その一部だけを取得し、それでも自分の変更をコントリビュートバックできるようにしたいのです。それは可能ですか?例えば、私はタグ130以降だけが欲しい、またはそのようなものですか?
もしそうなら、どのように?
どのように解決するのですか?
Gitの世界では、3種類の部分クローンについて話しているのです。
-
浅いクローン。 リビジョンポイントX以降の履歴が欲しいです。
使用する
git clone --depth <n> <url>
を使ってください。しかし、浅いクローンは他のリポジトリとやりとりする際にいくらか制限されることを覚えておいてください。 パッチを生成し、電子メールで送信することができるようになります。 -
ファイルパスによる部分クローン。 私はいくつかのディレクトリにすべてのリビジョン履歴が欲しい
/path
.不可 をGitで使うことができます。 しかし、最近のGitでは スパースチェックアウト つまり、全履歴を持ちながら、全ファイルのサブセットだけをチェックアウトする(作業領域に置く)ことができるのです。
-
選択されたブランチのみをクローンします。 1つのブランチ(またはブランチの選択されたサブセット)のみをクローンしたいのですが。
可能であり
git 1.7.10 以前では簡単ではありません。clone が行うことを手動で行う必要があります。
git init [<directory>]
そしてgit remote add origin <url>
を編集します。.git/config
置換*
でremote.origin.fetch
をリクエストされたブランチ (おそらく 'master') で実行します。git fetch
.git 1.7.10 時点で
git clone
は--single-branch
オプションがありますが、これはこの目的のために追加されたようなもので、かなり簡単なようです。しかし、ブランチは通常その歴史のほとんどを共有しているので、ブランチのサブセットのみをクローンすることによる利益は、あなたが考えているよりも小さいかもしれないことに注意してください。
選択したブランチのサブセットのみの浅いクローンを作成することもできます。
もし、人々がファイルパスによってどのように物事を分解したいか (同じリポジトリ内の複数のプロジェクト) がわかっているなら、サブモジュール (svn:externals のようなもの) を使って、レポを個別にクローンできる部分にあらかじめ分割しておくことができます。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] まだプッシュされていない Git マージを元に戻す
-
[解決済み] Gitブランチをmasterにマージする最も良い(そして最も安全な)方法は何ですか?
-
[解決済み] Gitで落としたスタッシュを復元する方法とは?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルの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 実装 サイバーパンク風ボタン
おすすめ
-
git pushで "Updates were rejected because your current branch is behind "というエラーが報告される。
-
[解決済み] Git リポジトリのサブディレクトリのみをクローンする方法を教えてください。
-
[解決済み] 単一のgitコミットに対して設定されたユーザーを上書きする
-
[解決済み] なぜGitでコミットする前にステージが必要なのですか?
-
[解決済み] フォルダからサブモジュールのリポジトリを作成し、そのgitコミット履歴を保持する
-
[解決済み] Git: リモートブランチの情報を更新する
-
[解決済み] gitは "サイレントモード "で動作しますか?
-
[解決済み] 以前のコミットにファイルを追加するには?
-
[解決済み] 別のユーザーでコードをコミットするにはどうすればよいですか?
-
[解決済み] ファイル変更時のDockerコンテナの再構築