サブディレクトリを含むgitリポジトリがあります。dirA/dirBの例。git clone
Unixサーバーでサブディレクトリ(dirB)からファイルのみをプルする方法はありますか?
これを行うクローン以外のgitコマンドはありますか?
特定のファイルをGitするにはどうすればよいですか?
サブディレクトリを含むgitリポジトリがあります。dirA/dirBの例。git clone
Unixサーバーでサブディレクトリ(dirB)からファイルのみをプルする方法はありますか?
これを行うクローン以外のgitコマンドはありますか?
特定のファイルをGitするにはどうすればよいですか?
プロジェクトがと呼ばれるディレクトリproject
にあり、に触れるコミットのみが必要であるとしますproject/dirB
。
それで:
git clone project/ subproject/
cd subproject
git filter-branch --prune-empty --subdirectory-filter dirB HEAD
subproject
に触れるgit履歴が含まれるようになりますdirB
。
Cf https://www.kernel.org/pub/software/scm/git/docs/git-archive.html
シェルコマンドで:
git archive --remote=<repo_url> <branch> <path> | tar xvf -
回避策を共有したいと思います。リポジトリ全体のクローンを作成してから、サブディレクトリのsymulinkを作成できます。
mkdir <repo_dir>
cd <repo_dir>
git clone <repo_url>
ln -s <sub_dir> <your_location_where_you_want_to_checkout_sub_dir>
繰り返しますが、これは解決策ではなく、単なる回避策です。リポジトリ全体のクローンを作成し、からのみ変更をプルできます。しかし、これは私の場合には役に立ちました。
実際にはクローン作成ではありませんが、プロジェクトの一部で新しいリポジトリを開始したい場合は、リポジトリに移動して
git archive master <subdir> | tar -x -C /somewhere/else
次に、/ somewhere / elseに移動し、そこで新しいリポジトリを開始します。
Gitはリポジトリレベルで機能します。サブディレクトリのみを選択することはできません。関心のあるリポジトリにWebインターフェイスがある場合は、サブディレクトリに移動してそれを取得できる可能性があります。
リポジトリの一部のみのクローンを作成する場合は、gitサブモジュールを確認する必要があります。
サブディレクトリは特定のgitリポジトリによって管理され、メインリポジトリでサブモジュールとして参照されます。
メインリポジトリのクローンを作成する場合、サブモジュールは自動的にクローンされません。