私は conflict の単純なリストが必要です。
より単純なものはありますか。
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
これはばかげたやり方です:
grep -H -r "<<<<<<< HEAD" /path/to/project/dir
git status
は、 "modified"や "new file"などではなく、競合のあるファイルの隣に "both modified"を表示します。
git diff --check
競合マーカー行番号を含むを含むファイルのリストが表示されます。
例えば:
> git diff --check
index-localhost.html:85: leftover conflict marker
index-localhost.html:87: leftover conflict marker
index-localhost.html:89: leftover conflict marker
index.html:85: leftover conflict marker
index.html:87: leftover conflict marker
index.html:89: leftover conflict marker
git status --short | grep "^UU "
これは私のために働く:
git grep '<<<<<<< HEAD'
または
git grep '<<<<<<< HEAD' | less -N
コマンドラインでgit ls-files -u
を打つと競合が発生しているファイルがリストされます。
これがGitに追加された可能性がありますが、まだ解決されていないファイルが次のようにステータスメッセージ(git status)に表示されます。
#
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: syssw/target/libs/makefile
#
これがUnmerged pathsセクションだと注意します。
もしあなたがコミットしようとし、そして衝突があるなら、gitはあなたに現在未解決の衝突のリストを与えるでしょう…しかし明白なリストとしてではありません。これは通常、対話的に作業するときに必要なものです。競合を修正するとリストが短くなるためです。
あなたのgitルートディレクトリ$ {GIT_ROOT}がどこにあるか知っていると仮定すれば、
cat ${GIT_ROOT}/.git/MERGE_MSG | sed '1,/Conflicts/d'
私はいつもgit status
を使いました。
ファイル名だけを得るために最後にawk
を追加することができます
git status -s | grep ^U | awk '{print $2}'
これが私がbashでのコマンドライン置換に適した修正ファイルをリストするのに使っているものです
git diff --numstat -b -w | grep ^[1-9] | cut -f 3
リストを編集するには$(cmd)
置換を使います。
vi $(git diff --numstat -b -w | grep ^[1-9] | cut -f 3)
ファイル名にスペースが含まれていると機能しません。スペースをエスケープまたは引用符で囲むためにsed
を使用しようとしましたが、出力リストは正しく見えましたが、$()
置換はまだ望みどおりに動作しませんでした。
私の2セントがここにあります(クールで実用的な反応がたくさんあるときでさえ)
私は.gitconfig
でこのエイリアスを作成しました
[alias]
...
conflicts = !git diff --name-only --diff-filter=U | grep -oE '[^/ ]+$'
これは、衝突のあるファイルの名前だけを表示します。パス全体ではありません。
他の答えで強調されているように、私たちは単にコマンド git status を使い、次にUnmerged pathsの下にリストされたファイルを探すことができます。