gitでパッチファイルを作成できるかどうかを知りたかったのですが、私はいくつかのファイルでいくつかの変更を行った場合、パッチファイルはファイル名に対して作成する必要があります。gitでパッチファイルを作成する
git diff
はコンソールに変更を表示しますが、出力を別のファイルに出力することはできますか?
gitでパッチファイルを作成できるかどうかを知りたかったのですが、私はいくつかのファイルでいくつかの変更を行った場合、パッチファイルはファイル名に対して作成する必要があります。gitでパッチファイルを作成する
git diff
はコンソールに変更を表示しますが、出力を別のファイルに出力することはできますか?
あなたがfoo.txt
、bar.txt
とhello.txt
を変更aaa111
をコミット作った事があります。
git format-patch -1 aaa111
これは3つのファイルを変更を含むパッチを生成します。
git format-patch -1 aaa111 -- foo.txt
それはfoo.txt
の変更のみを含むパッチを生成します。
git format-patch -1 aaa111 --stdout -- bar.txt > aaa111.bar.patch
これは、次のスクリプトは、最新に変更されたファイルのためのパッチをコミット作成bar.txt
ありがとう@ElpieKayそれは働いた。 – BeginnersSake
@ElpieKay '-1'が何を表しているのか(何をしているのか)を教えてください。私は 'git format-patch -h'をチェックしましたが、リストには載っていません。また、最近の3つのコミットのパッチを作成する場合、それぞれのファイルを1つのファイルにコミットするとどうなりますか?どうも。 – xpt
@xpt '-h'はいくつかのオプションしかリストしていません。代わりに、 'git format-patch --help'か' man git format-patch'を使用してください。 '-1'は' -
の変更のみ(HEAD~1
)が含まれaaa111.bar.patch
という名前のパッチを生成します。
# Enumerate the files modified on the desired commit
for file in $(git diff --name-only HEAD~1); do
# Generate the name of the patch file: replac '/' with '_'
# in the paths of the modified files and add the .patch termination
patch=${file//\//_}.patch
# Create one patch for each modified file
git diff HEAD~1 -- $file > $patch
done
パスを含むようにパッチファイル名の生成を変更することができます(カレントディレクトリに生成しない)。また、異なるコミット間でdiffを生成するには、両方の場所のHEAD~1
を適切なコミット識別子で置き換えます。
データが限られているとはどういう意味ですか?それは私が通常パッチを作成する方法、またはgit diff master> filename.patchです。パッチを適用するときは、パッチの-p1
dj2
Sorry my bad @ dj2 1つのファイルに正常に保存されますが、別のファイルに保存できます。たとえば、file1とfile2が変更された場合、file1.patchとfile2.patchを同じものに対して作成することができます。 – BeginnersSake
なぜ個々のファイルにパッチを分割したいのですか? –