私は、このコマンドを使用して、gitの2つのコミットから変更されたファイルのリストをエクスポートしようとしている:分割gitのdiffを--name-状態
read -ra ADDR <<< `git diff --name-only HEAD..HEAD~1 | sed -e "s/ /\\\ /g"`
for i in "${ADDR[@]}"; do
echo "$i"
done
これが正常に動作します。私は、新しい行に各ファイルを入れて素敵なリストを端末に出力します。
file1.txt
file2.txt
file3.txt
しかし、私は--name-status
の代わり--name-only
を使用します。その理由は、後にどのような変更が行われたかによって、後で異なることができるからです(たとえばMまたはD)。
これは動作しません。 (\t
と同じ)私はIFS
$'\n'
に変数(1行上のすべてを返す)、$'\t'
(例えばM file1.txt
、最初の行を返す)と' '
を変更しようとしてい
M
file1.txt
M
file2.txt
M
file3.txt
:私は、次の形式でリストを取得します成功なし。
はあなただけ追加することができます。ちょうどある行を削除するために、あなたのsedスクリプトに「/^M $/D」 M.幸運。 – shellter
'git diff -name-status .. 'を実行すると、ファイル名のリストが表示され、最初のカラムにステータスが表示されます。あなたの 'sed'コマンドがあなたに何を提供しているのか分かりません。私のbashは最高ではないので、例を挙げることはできませんが、あなたはawkで望みを得ることができると思います。 http://www.thegeekstuff.com/2010/01/awk-introduction-tutorial-7-awk-print-examples/ –
lhagemann