修正する:

修正する:

git diff始まる変更をどのように無視できますか#?一般的なdiffコマンドでは、次のようなものを使用します。

diff <(grep -v '^#' file1) <(grep -v '^#' file2)

しかし、以下の提案された解決策のどれも機能しません!

git diffコメントを省略すると本当に読むことができないのでしょうか?

修正する:

私の中に.gitconfig

[pager]
    cdiff = diff-highlight

[alias] 
    cdiff = "diff -w --ignore-blank-lines -I'^#'"

これを行うと、git cdiff次のエラーが発生します。

error: invalid option: -I^#

アップデート2:

本当に残念です。この構文はgit diff -G'^[^#]'安定して動作しません。例:

$ cat 1.txt
aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
iii
jjj

新しいGitリポジトリを初期化します。

$ git init && git add . && git commit -m "initial commit" -a

ファイルの上部に説明を追加するだけです。

$ cat 1.txt
# comment
aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
iii
jjj

これまでは期待通りに動作します。git diff -G'^[^#]'コメントを変更としてマークしないでください。ただし、最後の行に実際の変更を追加して再度git diff -G'^[^#]'実行すると、追加された最後の行が表示されますが(必要に応じて)、以前に表示されなかった最初のコメント行も表示されます。

したがって、デフォルトではコメント以外の変更を追加するたびに、gitはコメントまですべてを表示します。

ベストアンサー1

これは、ingの前にすべてのファイルをフィルタリングすることによってdiff達成できます。

まず、小さなヘルパーを作成して呼び出しますstripcomments(実行ファイル、どこかにありますPATH)。

#!/bin/sh -
exec grep -ve '^#' -- "$@"

git diff次に、このヘルパーを使用してモードを設定します。

git config diff.nocomments.textconv stripcomments

(現在のリポジトリが構成されています)。

最後に、すべてのファイルでこのヘルパーを使用するようにgit属性を設定します。

echo '* diff=nocomments' >> .gitattributes

(ストレージの最上位ディレクトリにあります)

git diffこれで始まるすべての行は無視されます#。これは行番号付けに影響します。

すべての目的をオーバーライドするのではなく、それをエイリアスとして使用するには、上記のコマンドをgit diffスキップしてgit config次のようにエイリアスを作成します。

git config alias.cdiff '-c diff.nocomments.textconv=stripcomments diff'

これでコメントが削除された状態で実行されますgit cdiffgit diff#

git config --globalリポジトリごとに()にプロパティを使用して保存することで、これらすべてのエントリをグローバルに設定できます。$XDG_CONFIG_HOME/git/attributes~/.config/git/attributes.gitattributes

バラよりman gitattributesそしてman git-configもっと学ぶ。

おすすめ記事