16

このスレッドによると、Gitのsparse-checkout機能の除外が実装されることになっています。それは...ですか?

私が次の構造を持っていると仮定します。

papers/
papers/...
presentations/
presentations/heavy_presentation
presentations/...

presentations/heavy_presentation残りをチェックアウトに残したまま、チェックアウトから除外したいと思います。私はこれを実行することができませんでした。これの正しい構文は何ですか?

4

5 に答える 5

10

悲しいことに、上記のどれもうまくいかなかったため、sparse-checkoutファイルのさまざまな組み合わせを試すのに非常に長い時間を費やしました。

私の場合、IntelliJ IDEA 構成を含むフォルダーをスキップしたかったのです。

これが私がしたことです:


走るgit clone https://github.com/myaccount/myrepo.git --no-checkout

走るgit config core.sparsecheckout true

.git\info\sparse-checkout以下の内容で作成

!.idea/*
!.idea_modules/*
/*

「git checkout --」を実行して、すべてのファイルを取得します。


機能させるために重要なことは/*、フォルダー名の後に追加することでした。

私はgit 1.9を持っています

于 2014-09-30T20:41:08.613 に答える
7

以下のようなものが機能することを期待していました。

/*
!presentations/heavy_presentation

しかし、そうではありません。そして、私は他の多くの組み合わせを試しました。除外が適切に実装されておらず、その周りにバグがあると思います(まだ)

何かのようなもの:

presentations/*
!presentations/heavy_presentation

ただし、動作し、heavy_presentation フォルダーなしでプレゼンテーション フォルダーを取得します。

したがって、回避策は、他のすべてを明示的に含めることです。

于 2012-03-05T23:42:44.287 に答える
4

私も同じ問題を抱えていました。次のようなもので修正しました:

!presentations/heavy_presentation
presentations/*

それが機能することをどのように理解しているか:ルールごとにファイルを読み取ります。何かが含まれている場合、その単語を含むすべてのパスが含まれ、スパース チェックアウトが終了するまでステータスは変更されません。含める前に除外ルールを追加すると、私の意見では、最初にファイルが削除され、すべてが含まれているとマークされます。

完全にはわかりませんが、これは私の経験に基づいて推測したものであり、私のために働いています. それが誰かを助けることを願っています。

于 2013-03-08T14:11:51.547 に答える
1

簡潔な答え:

git sparse-checkout set /* !/presentations/heavy_presentation/
git sparse-checkout init [--cone]

--coneオプション: 少数のパターンや小さなリポジトリには関係ありませんが、一般的な高速化には関係ありません。sparse-checkout /CONE PATTERN SETドキュメントで説明されているように、パターンの特定の標準的な順序が必要です)。後で導入することもできます:

git config core.sparseCheckoutCone true
于 2021-02-22T18:40:46.557 に答える