34

サブディレクトリを含むgitリポジトリがあります。dirA/dirBの例。git cloneUnixサーバーでサブディレクトリ(dirB)からファイルのみをプルする方法はありますか?

これを行うクローン以外のgitコマンドはありますか?

特定のファイルをGitするにはどうすればよいですか?

4

6 に答える 6

35

プロジェクトがと呼ばれるディレクトリprojectにあり、に触れるコミットのみが必要であるとしますproject/dirB

それで:

git clone project/ subproject/
cd subproject
git filter-branch --prune-empty --subdirectory-filter dirB HEAD 

subprojectに触れるgit履歴が含まれるようになりますdirB

于 2012-08-06T20:12:03.680 に答える
19

Cf https://www.kernel.org/pub/software/scm/git/docs/git-archive.html

シェルコマンドで:

git archive --remote=<repo_url> <branch> <path> | tar xvf -
于 2013-10-25T15:38:11.670 に答える
1

回避策を共有したいと思います。リポジトリ全体のクローンを作成してから、サブディレクトリのsymulinkを作成できます。

mkdir <repo_dir>
cd <repo_dir>
git clone <repo_url>
ln -s <sub_dir> <your_location_where_you_want_to_checkout_sub_dir>

繰り返しますが、これは解決策ではなく、単なる回避策です。リポジトリ全体のクローンを作成し、からのみ変更をプルできます。しかし、これは私の場合には役に立ちました。

于 2017-01-02T19:43:12.803 に答える
1

実際にはクローン作成ではありませんが、プロジェクトの一部で新しいリポジトリを開始したい場合は、リポジトリに移動して

git archive master <subdir> | tar -x -C /somewhere/else

次に、/ somewhere / elseに移動し、そこで新しいリポジトリを開始します。

于 2017-02-02T23:41:50.290 に答える
0

Gitはリポジトリレベルで機能します。サブディレクトリのみを選択することはできません。関心のあるリポジトリにWebインターフェイスがある場合は、サブディレクトリに移動してそれを取得できる可能性があります。

于 2012-08-06T19:58:17.980 に答える
-1

リポジトリの一部のみのクローンを作成する場合は、gitサブモジュールを確認する必要があります。

サブディレクトリは特定のgitリポジトリによって管理され、メインリポジトリでサブモジュールとして参照されます。

メインリポジトリのクローンを作成する場合、サブモジュールは自動的にクローンされません。

于 2012-08-06T20:00:58.897 に答える