7

私は自分のrpmを構築しています。通常、興味のあるコミットまたはタグから tarball を取得するために git アーカイブを使用します (タグ 1.0 を配置したとします):

git archive --format=tgz --prefix=product-1.0 1.0 > product-1.0.tgz

今、まだコミットしていないローカル開発を行っていて、アーカイブを取得したいとします。コミットせずにこれを取得する方法はありますか?

編集次のようなものを使用できます:

tar cf product-1.0.tgz --exclude=.git

しかし、それにはすべてのバイナリと、私が好まない他の追跡されていないファイルが含まれます...

4

7 に答える 7

9
git ls-files | tar Tzcf - archive.tgz
于 2014-04-16T17:50:15.527 に答える
8

これがまさにあなたが望むものであるとは100%確信が持てませんが、git stash createで行った変更を隠しておくことができます。これにより、レポの現在の状態のハッシュが得られ、git archive <options> $HASH.

于 2014-04-16T17:09:53.703 に答える
1

申し訳ありませんが、それは実際の答えではありません。

何らかの方法があるかもしれませんが、実際にはあまり意味がありません。コミットはかなり軽いです。完全に一時的なファイルや壊れたファイルをコミットしても問題はありません。パブリックにプッシュするまでは、すべてローカル ストレージです。新しいブランチを作成してコミットするだけで、ある時点でそのブランチをすぐにでも削除できます。注意しなければならない唯一のことは、そのブランチをパブリック リポジトリにプッシュしないことです。その最大の利点は、コミット中に、含めるファイルを選択的に選択できることです。不要なバイナリ、アーカイブなどを非常に詳細に除外できます。などでフィルタリングするよりもはるかに使いやすいですbash

したがって、私にとっては、パッケージを構築している場合は、本当にコミットしたいと考えています。将来のある時点で、元のファイルが何であったかを確認する必要があるからです。またはそれに戻ります。それがまさにブランチとリポジトリ全体です。ある状態のいくつかのファイルをマークして記憶します。リポジトリは「リリースコード」を保管するためだけのものではありません。いつでも必要なすべてのものを、当時とまったく同じ状態に保つためのものです。

したがって、これらのビルド/パッケージには真の分岐をお勧めします。隠し場所ではありません。Stash は一時的なもので、すぐに蒸発することを意図しています。そのためのハッシュを取得しますが、そのブランチ/スタッシュ/リビジョン全体を非常に簡単に削除できます。それはバージョニングの本質を完全に消滅させてしまいます。削除するためだけに、それを git に入れます。

通常のブランチと通常のコミットを使用すると、将来いつでも、履歴の任意の時点でビルドした RPM を確認または再作成できます。私見、それは大きなプラスです。

于 2014-04-16T17:11:57.580 に答える