2017-07-27 13 views
1

最後のコミットでコミットされたオブジェクトの名前を取得し、それらのファイルをすべて圧縮しようとしています。私はすでにそれらのファイルを取り出し、それらを圧縮するアーカイブコマンドを持っています。 以下のコマンドは、ブランチ内のすべてのファイルを圧縮します。Gitで最新のコミットでコミットされたオブジェクトの名前を取得する方法

git archive -o update.zip HEAD 

しかし、私は何とかコマンドは、最後にコミットしたオブジェクトのリストを取得するために得ることができる場合、私はこれらの2つのコマンドを組み合わせて、以下に示すようにオブジェクトのみを圧縮することができますコミット。

git archive -o update.zip HEAD $(COMMAND TO GET NAME) 

ありがとうございました!

答えて

1
git diff --name-only HEAD^ HEAD 

これは実際には任意の二つのコミットの間の任意の差分のために働く:

git diff --name-only master test 
git diff --name-only 4.2.1 staging 
git diff --name-only ea43c77 HEAD 
# etc ... 

注:このメソッドは、変更を区別するために有効にしません/ファイルや削除/名前が変更されたファイルを追加しました。

あなたは各ファイル名の前にA, M or Dを追加します--name-statusオプション、試すことができます:あなたは、これらのファイル」に、このリストを分割するために、余分な処理のビットを必要とする

git diff --name-status <commit1> <commit2> 

を追加する必要がありますがzipアーカイブに "、"これらのファイルはターゲットディレクトリから削除する必要があります "。私はリストを取得することができますどのような方法がある

# inside your repo : 
git diff -p HEAD^ HEAD > update.patch 

# in your target directory : 
patch update.patch 
+0

:あなたの意図は、この差分の変更を適用する場合


、あなたはまた、パッチファイルを生成し、ターゲットディレクトリにそれを適用することができますテストブランチからマスターにオブジェクト名がマージされましたか? –

関連する問題