最後のコミットを確認し、追加または変更されたファイルのリストを取得し、それらをテキストファイルのみにフィルターして、最後にエディターで開くgit openlast
コマンドが必要でした。
これまでのところ、私は次のことを行いました。
git show --stat HEAD
read -p "Open in Vim tabs? (Y/n)" -n 1 -r
if [[ -z $REPLY || $REPLY =~ [Yy] ]]; then
vim -p $(git diff --diff-filter=AM --ignore-submodules --name-only HEAD^)
fi
ダウンフォールは、前のコミットでバイナリファイルを追加または変更すると、エディター(この場合はVim)によって開かれることです。 git diff
コマンドで出力されたリストを取得してバイナリファイルを削除する方法はありますか?
xargs
にパイプし、grep -Il ""
を使用してバイナリファイルを除外できます。
git diff --diff-filter=AM --ignore-submodules --name-only HEAD^ | \
xargs grep -Il ""
git openfiles
コマンド#!/bin/bash
git show --stat HEAD
files=($(git diff --diff-filter=AM --ignore-submodules --name-only HEAD^ | xargs grep -Il ""))
read -p "Open ${#files[@]} files in Vim tabs? (Y/n)" -n 1 -r
if [[ -z $REPLY || $REPLY =~ [Yy] ]]; then
exec vim -p ${files[@]}
else
exit 1
fi
ファイル拡張子がある場合は、Gawkの拡張子を使用して、リストに含めるものを選択できます。例の拡張子は「.txt」と「.jpeg」です。正規表現は、gitからの出力を編集するために使用されます。
git show --stat HEAD
commit ec07d8306e9e61894d18e6f8d6ea1e5d650c0712
Author: root <root@somebox>
Date: Thu Dec 17 17:19:30 2015 -0500
test project commit
add email addresses.jpeg | Bin 0 -> 127688 bytes
allpermissions.jpeg | Bin 0 -> 126620 bytes
error.jpeg | Bin 0 -> 227469 bytes
sonic_boom.jpeg | Bin 0 -> 112958 bytes
test1.jpeg | Bin 0 -> 96857 bytes
test1.txt | 1 +
test2.txt | 1 +
top_cipher_test_results.jpeg | Bin 0 -> 149293 bytes
バイナリの.jpeg拡張子ファイルのGawk削除。
git show --stat HEAD|awk '{ if($1 ~ /.jpeg/)print $1}'
必要に応じて、.txtと.jpegの両方を含める:
git show --stat HEAD|awk '{ if($1 ~ /.jpeg|.txt/)print $1}'