10

gitの特定のコミットまたは一連のコミットから変更されたファイルのみをエクスポート/アーカイブする簡単な方法はありますか?これを行うための明確な指示が見つからないようです(そして私はLinux / Gitを初めて使用します)。

私はmsysgitを使用しており、ほとんどの場合、リポジトリ全体をデプロイしても問題ありませんが、多くの場合、一度にいくつかのファイルを小さな修正でデプロイする方がはるかに効率的です。

私のアクセスレベルはプロジェクトとクライアントによって異なるため、リモートサーバーにgitをプッシュ/プル/インストールすることは実際にはオプションではありません。

(大まかな推測)への簡単な方法はありますか?

pipe 'diff --names-only' to 'git-archive'? 
4

1 に答える 1

27

git-archiveを使用する必要はないと思います。を使用--name-onlyして、ファイルをtarで処理できます。

tar czf new-files.tar.gz `git diff --name-only [diff options]`

Linuxは初めてなので、説明が必要な場合があります。

コマンドラインのバックティックにより、シェルは最初にバックティック内でコマンドを実行し、次にそのコマンドの出力をのコマンドラインに置き換えますtar。したがって、git diffが最初に実行され、ファイル名のリストが各行に1つずつ生成されます。改行はスペースに折りたたまれ、ファイルのリスト全体がtarコマンドラインに配置されます。次にtar、実行されて、指定されたアーカイブが作成されます。これにより非常に長いコマンドラインが生成される可能性があるため、変更されたファイルが非常に多い場合は、別の手法が必要になる可能性があることに注意してください。

于 2009-11-05T02:58:11.800 に答える