競合するファイルの単純なリストが必要です。
以下よりも簡単なものはありますか?
git ls-files -u | cut -f 2 | sort -u
また:
git ls-files -u | awk '{print $4}' | sort | uniq
そのためのハンディをセットアップできるとalias思いますが、プロがどのように行うのか疑問に思っていました. たとえば、競合を自動解決するなどのシェルループを作成するために使用しmergetool.cmdます。
競合するファイルの単純なリストが必要です。
以下よりも簡単なものはありますか?
git ls-files -u | cut -f 2 | sort -u
また:
git ls-files -u | awk '{print $4}' | sort | uniq
そのためのハンディをセットアップできるとalias思いますが、プロがどのように行うのか疑問に思っていました. たとえば、競合を自動解決するなどのシェルループを作成するために使用しmergetool.cmdます。
git diffを使用し、name-onlyを使用して名前のみを表示し、diff-filter=Uを使用して「Unmerged」ファイルのみを含めます。
git diff --name-only --diff-filter=U
私の質問に答えようとしています:
いいえ、問題の方法よりも簡単な方法はないようです。
それを何度も入力した後、短い方を「git-conflicts」という名前の実行可能ファイルに貼り付けて、git からアクセスできるようにし
ました。これで、必要なgit conflictsリストを取得することができます。
更新: Richard が示唆するように、実行可能ファイルの代わりに git エイリアスを設定できます
git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
エイリアスよりも実行可能ファイルを使用する利点は、そのスクリプトをチーム メンバーと共有できることです (リポジトリの bin dir 部分で)。
ここにばかげた方法があります:
grep -H -r "<<<<<<< HEAD" /path/to/project/dir
git status「変更された」または「新しいファイル」などの代わりに、競合があるファイルの横に「両方が変更されました」と表示します
git status --short | grep "^UU "
コミットしようとして競合が存在する場合、git は現在未解決の競合のリストを表示しますが、単純なリストではありません。競合を修正するとリストが短くなるため、これは通常、インタラクティブに作業するときに必要なものです。
これは Git に追加されたのかもしれませんが、まだ解決されていないファイルは、次のようにステータス メッセージ (git status) に一覧表示されます。
#
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: syssw/target/libs/makefile
#
これは Unmerged paths セクションであることに注意してください。
私はいつもちょうど使ってきましたgit status。
最後に追加awkして、ファイル名だけを取得できます
git status -s | grep ^U | awk '{print $2}'
より多くの情報を提供するチャールズ・ベイリーの答えのわずかなバリエーション:
git diff --name-only --diff-filter=U | xargs git status