指定したタグの浅いクローンを作成します。
git clone --branch v0.1.3 --depth 1 file:///c/usr/sites/smc .
この後、複製されたリポジトリにはタグ v0.1.3 (および関連ファイル) のみが含まれます。そのタグの前後のすべての変更の履歴はありません (私が理解しているように、間違っていたら訂正してください)。次に、クローンを更新して v0.1.4 を含めたいと思います。「git fetch --unshallow」コマンドを使用すると、必要のない完全な履歴が取得されます。クローンを拡張してマスターからの新しい履歴 (v0.1.4 や 0.1.5 など) を含め、古い履歴 (0.1.2 など) を含めないようにする方法はありますか? (update-shallow というオプションが表示されますが、それが何をするのか、または関連があるのかどうかがわかりません。)
これの目標は次のとおりです。
1) リポジトリ全体を複製しないことで、リモート サーバー上のリポジトリの初期設定を高速かつ小規模にします。(私たちのレポはほとんどバイナリです: DLL、EXE。)
2) リモート リポジトリを新しいバージョン (タグで指定) にアップグレードできるようにしますが、以前のバージョンにはアップグレードできません。このようなアップグレードでは、リポジトリの一部しか転送されないため、高速である必要があります。
注: 私の Git バージョンは、Windows 7 では 1.9.2.msysgit.0 です。これには、浅いクローン作成に対する最近の機能強化が含まれています。Linux でメイン リポジトリをホストする可能性がありますが、デプロイ先のエージェントは Windows を実行します。その目的は、操り人形エンタープライズを使用してチェックアウトを管理することです。
更新: VonC の提案を試しました。
$ git fetch --update-shallow origin v0.1.4
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From file:///c/usr/sites/smc
* tag v0.1.4 -> FETCH_HEAD
paul.chernoch@USB-XXXXXXXXX /c/usr/sites/smc-clone3 ((v0.1.3))
$ git describe
v0.1.3
paul.chernoch@USB-XXXXXXXXX /c/usr/sites/smc-clone3 ((v0.1.3))
$ git tag --list
v0.1.3
コマンドは何かを実行しているように見えますが、ターゲット リポジトリにタグ v0.1.4 が表示されません。ただし、 --tags オプションを使用すると、すべてのタグだけでなく、すべての履歴も取得できます! また、git fetch コマンドの出力にある「FETCH_HEAD」という表記がわかりません。
更新: さらなる調査は、この SO の質問が同様の目標の後にあることを示しています: 特定のタグへの git 浅いクローン