属性はいくつかの場所から読み取ることができますが.gitattributes
、それらの中で最も一般的なものにすぎません。2 つ目 (リポジトリごとの構成と見なされる) は$GIT_DIR/info/attributes
.
マニュアルを引用するには:
.gitattributes
デフォルトでは、属性はアーカイブされているツリー内のファイルから取得されることに注意してください。事後に出力が生成される方法を微調整したい場合 (たとえば、適切な を に追加せずにコミットした場合
export-ignore
) .gitattributes
、必要に応じてチェックアウトされた.gitattributes
ファイルを調整し、--worktree-attributes
オプションを使用します。または、ファイル内のツリーをアーカイブする際に適用する必要のある属性を保持することもでき
$GIT_DIR/info/attributes
ます。
したがって、可能であれば、リストをそのファイルに貼り付けてから実行してくださいgit archive
。
もう 1 つの方法は、使用せずに、ファイルを受け入れるコマンドライン オプションを渡すワーク ツリーgit archive
だけを使用することです。これは裸のリポジトリでは機能しませんが、アーカイブする前にチェックアウトしても問題ない場合は、これを実行して、正しい環境と環境を提供することで実行できます。変数。tar
tar
--exclude-from
git read-tree
git 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