属性はいくつかの場所から読み取ることができますが.gitattributes、それらの中で最も一般的なものにすぎません。2 つ目 (リポジトリごとの構成と見なされる) は$GIT_DIR/info/attributes.
マニュアルを引用するには:
.gitattributesデフォルトでは、属性はアーカイブされているツリー内のファイルから取得されることに注意してください。事後に出力が生成される方法を微調整したい場合 (たとえば、適切な を に追加せずにコミットした場合
export-ignore) .gitattributes、必要に応じてチェックアウトされた.gitattributesファイルを調整し、--worktree-attributesオプションを使用します。または、ファイル内のツリーをアーカイブする際に適用する必要のある属性を保持することもでき
$GIT_DIR/info/attributesます。
したがって、可能であれば、リストをそのファイルに貼り付けてから実行してくださいgit archive。
もう 1 つの方法は、使用せずに、ファイルを受け入れるコマンドライン オプションを渡すワーク ツリーgit archiveだけを使用することです。これは裸のリポジトリでは機能しませんが、アーカイブする前にチェックアウトしても問題ない場合は、これを実行して、正しい環境と環境を提供することで実行できます。変数。tartar--exclude-fromgit read-treegit checkout-index$GIT_INDEX_FILE$GIT_WORK_TREE
別の可能な回避策は、アプローチを逆にすることです: tar(少なくとも GNU tar) は、パイプラインでアーカイブからものを削除できるというあまり知られていないオプションをサポートしています。
基本的に、あなたはすることができます
$ tar -C a_path -c -f - . \
| tar -f - --wildcards --delete '*.pdf' >result.tar
パイプラインの最初のパイプラインはすべてをアーカイブし、2 番目のパイプラインはシェル グロブ パターンtarに一致するファイルを除いてすべてを通過させます。*.pdf
したがって、シェルグロブを使用して削除するファイルを指定することがコマンドラインの制限に適合する場合は、出力を不要なものを削除するプロセスgit archiveにパイプするだけです。tar