2

次のコマンドを使用して、最新の 3 つのコミットでファイルのアーカイブを作成しようとしています。

git archive -o archive.zip $(git diff --name-only HEAD~3)

しかし、最後のコミットでいくつかのファイルを削除しました。これはdiff出力に表示されています。だから私はこのエラーが発生しています:

fatal: pathspec 'public/uploads/5839529ba9381.png' did not match any files

git アーカイブ中にコミットで削除されたファイルを無視するにはどうすればよいですか? --ignore-unmatch引数を試しましたが、うまくいきません。

4

2 に答える 2

1

私は同じ状況にありました。

tar vczf archive.tar.gz --ignore-failed-read `git diff --name-only hash1 hash2`

私も探していましたgit archive ignore deleted files。2つのブランチ/タグ/ハッシュなどの間で追加/変更されたファイルのアーカイブを作成したかったので.

tar解決策は、git アーカイブの代わりに使用し、出力を同じ方法で渡すことです。ここでの唯一の利点は、フラグを使用して不足しているファイル (コミット間で削除git diff) を実際に無視できることです。また、このフラグはアーカイブ ファイル名の後に付ける必要があることに注意してください。--ignore-failed-read

于 2018-10-23T15:57:55.993 に答える
0

基本的に、git archiveは特定の時点の状態をバックアップするために使用されます。タイム ラインの変更をバックアップするのには適していません。つまり、delete filesによるアクションを保存することはできませんgit archive

最新の 3 つのコミットをバックアップする場合は、コマンドを使用できますgit bundle

git bundle create last_three_commit.bundle HEAD~3..HEAD

また

git bundle create last_three_commit.bundle -3 HEAD    

詳細については実行git bundle --helpしてください。

于 2016-11-30T05:04:14.557 に答える