50

ワードプレスのインストールで何かをテストしようとしています。そうすることで、レポをすばやく複製したいと思います。ただ、アップロードディレクトリ( wp-content/uploads)は巨大なので無視したい。

注: このシナリオのためだけに、このディレクトリを常に .gitignore したくはありません。

基本的には、次の疑似コードのようなコマンドが必要です: git clone --ignore wp-content/uploads.

そのディレクトリを .gitignore に追加し、クローンを作成してから .gitignore に戻す最良の方法はありますか? それとももっと良い方法がありますか?

4

4 に答える 4

22

パーティーに少し遅れましたが、まばらなチェックアウトは必要ありませんか?

mkdir <repo> && cd <repo>
git init
git remote add –f <name> <url>

スパース チェックアウトを有効にします。

git config core.sparsecheckout true

必要なサブツリーを .git/info/sparse-checkout にリストして、sparse-checkout を構成します。

echo some/dir/ >> .git/info/sparse-checkout
echo another/sub/tree >> .git/info/sparse-checkout

リモートからのチェックアウト:

git pull <remote> <branch>

詳細については、 http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/を参照してください。

于 2016-12-15T10:57:00.473 に答える
10

git cloneリポジトリに追加された以前のすべてのコミットを含め、常に完全なリポジトリ*のクローンを作成します。したがって、ファイルを一時的に削除してクローンを作成した場合でも、それらのファイルを含む古いバージョンを引き続き受け取ることができます。

また、を編集するだけ.gitignoreでは、通常は無視される場合でも、追跡されたファイルはリポジトリから削除されません。

したがって、クローン作成中に特定のフォルダをスキップすることは実際には不可能です。

*クローン作成中に取得されるコミットの量を制限することは可能ですが、これによってリポジトリが使いやすくなるわけではありません。

于 2013-01-14T20:53:46.033 に答える
6

複製する深さを指定できます(--depth=11つのコミットのみを取得するため)。このディレクトリが欠落しているブランチをセットアップしてから、深さ 1 のみでクローンを作成することができます。git はスナップショット ベースであるため、クローン作成時にコミットの一部を除外するのは簡単ではありません。これはあなたが望むものに最も近いです。

このリポジトリを完全に制御できる場合は、このディレクトリのサブモジュールを作成し、その部分を管理したい場合にのみサブモジュールの更新を行うことができます。

于 2013-01-15T08:50:56.790 に答える
4

サーバー上:

 git checkout master^0    # the ^0 checks out the commit itself, not the branch
 git filter-branch --tree-filter 'git rm -r wp-content/uploads' HEAD
 git checkout -b filtered

(ここでの大きなプロジェクトの filter-branch は、毎秒約 2-3 コミットで新しい履歴を生成します)

その後、お好きな場所で、

 git init
 git remote add gimme your://repo/path
 git fetch gimme filtered

edit : http://git-scm.com/docs/git-filter-branchに従って構文エラーを修正しました

于 2013-01-15T10:31:03.683 に答える