Gitを使用したプロジェクトがあり、Subversionのようにmyproject/javascriptのように特定のディレクトリを複製またはプルしたいだけです。
いくつかの変更を行い、コミットして、もう一度プッシュバックします。
それが可能だ?
git fetch
git checkout HEAD path/to/your/dir/or/file
(3)の「path/...
」は、「.../file
」を含むレポルートのすぐ下のディレクトリから始まります
「HEAD」の代わりに、特定のコミットのハッシュコードが使用される場合があり、そのコミットに固有のリビジョン(ファイル)またはリビジョン(dir)を取得することに注意してください。
空のディレクトリ内:
git init
git remote add [REMOTE_NAME] [GIT_URL]
git fetch REMOTE_NAME
git checkout REMOTE_NAME/BRANCH -- path/to/directory
答えを探して、見つけて、あきらめて、再試行するなどではなく、最終的に別のSOスレッドでこれに対する解決策を見つけました。
そこにあるものをコピーして貼り付けるには:
git init
git remote add -f Origin <url>
git config core.sparsecheckout true
echo <dir1>/ >> .git/info/sparse-checkout
echo <dir2>/ >> .git/info/sparse-checkout
echo <dir3>/ >> .git/info/sparse-checkout
git pull Origin master
OPが望むこと(1つのディレクトリのみで作業)を行うには、上記の手順を実行するときに、その1つのディレクトリを.git/info/sparse-checkout
に追加するだけです。
@cforbishに感謝します!
不可能です。すべてのリポジトリをプルするか、何も必要はありません。
たぶん、このコマンドは役に立ちます:
git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit path/to/your/dir/or/file > files.tar
「Etvoilà」
そうですか。サブモジュールを作成してみて、うまくいくかどうかを確認します。結果を報告します。編集:スパースチェックアウトとサブモジュールは私のために働いた。私が読んだリンク(VonCとMichel Jansenによる)は次のとおりです。
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
http://vmiklos.hu/blog/sparse-checkout-example-in-git-1-7
http://www.kernel.org/pub/software/scm/git/docs/git-read-tree.html#_sparse_checkout
git clone --filter
Git 2.19から
このオプションは、サーバーからの不要なオブジェクトのフェッチを実際にスキップします。
現在のサポート状況を説明する詳細な回答を以下に書いています: Gitリポジトリのサブディレクトリのみを複製するにはどうすればよいですか?
その領域でgit clone
に実装されたものはすべて、git pull
の類似物を持つ可能性が非常に高いです。
ディレクトリに入力せずに最新の変更を取得する場合は、次の操作を実行できます。
$ git -C <Path to directory> pull
場合によっては、diffを経由するという厳密な条件なしに、ファイルの以前のコピーを確認したいだけです。
このような場合、リポジトリのクローンを作成し、興味のある特定のコミットをチェックアウトして、そのクローンされたリポジトリのサブディレクトリを見るのは簡単です。すべてがローカルであるため、完了したらこのクローンを削除できます。