Potrzebuję tylko prostej listy konfliktów plików.
Czy jest coś prostszego niż:
git ls-files -u | cut -f 2 | sort -u
lub:
git ls-files -u | awk '{print $4}' | sort | uniq
Wydaje mi się, że mógłbym to zrobić alias
, ale zastanawiałem się, jak to robią profesjonaliści. Używałbym jej do zapisywania pętli powłoki, np. Do automatycznego rozwiązywania konfliktów itp. Może zamień tę pętlę, podłączając się do niej mergetool.cmd
?
git
git-merge
git-merge-conflict
Inger
źródło
źródło
git rebase --continue
wyświetli listę plików z konfliktami (jeśli występują)git rebase --continue
nie wymienił konfliktów, po prostu kazał mi je naprawić (git wersja 2.21.0)Odpowiedzi:
źródło
git config --global alias.conflicts "diff --name-only --diff-filter=U"
git status
?git conflicts
git diff --check
działa lepiej.git diff --check
pokaże listę plików zawierających znaczniki konfliktu, w tym numery linii .
Na przykład:
źródło: https://ardalis.com/detect-git-conflict-markers
źródło
git diff --check
opowiadam też o innych (mniej poważnych) problemach, takich jak końcowe białe znaki, więcgit diff --check | grep -i conflict
może być w przypadku OPPróbuję odpowiedzieć na moje pytanie:
Nie, nie wydaje się, że istnieje prostszy sposób niż ten w pytaniu, po wyjęciu z pudełka.
Po zbyt częstym wpisywaniu tego, wkleiłem krótszy plik do pliku wykonywalnego o nazwie „git-konflikty”, udostępnionego dla git, teraz mogę po prostu:
git conflicts
uzyskać żądaną listę.Aktualizacja: jak sugeruje Richard, możesz ustawić alias git jako alternatywę dla pliku wykonywalnego
Zaletą korzystania z pliku wykonywalnego nad aliasem jest to, że można udostępnić ten skrypt członkom zespołu (w części repo bin bin).
źródło
git config --global alias.conflicts "!git ls-files -u | cut -f 2 | sort -u"
(!! Oznacza uruchomienie tego polecenia powłoki, a nie tylko polecenia git).!
zostanie zinterpretowana przez twoją powłokę:git config --global alias.conflicts '!git ls-files -u | cut -f 2 | sort -u'
Oto niezawodny sposób:
źródło
grep -H -r "<<<<<<< HEAD" .
c
ładnie Wynika liczbę konfliktów też! Jedna uwaga jest taka, że użyłbym flag,-Hrn
które dostarczą również informacji o numerze linii.[<=>]{7}
zamiast tego. (Może potrzebować-E
flagi, aby działała w grep.) Lub,<{7}
jeśli nie martwisz się o wiszące znaczniki scalania lub chcesz policzyć konflikty. (Możesz także użyćgit grep
- wtedy nie potrzebujesz-r
flagi.)git status
wyświetla „oba zmodyfikowane” obok plików powodujących konflikty zamiast „zmodyfikowanych” lub „nowych plików” itpźródło
źródło
^U
wszystko, zaczynając od UDD, AU, UD, UA, DU, AA, UU
DU
To działa dla mnie:
git grep '<<<<<<< HEAD'
lub
git grep '<<<<<<< HEAD' | less -N
źródło
możesz nacisnąć
git ls-files -u
w linii poleceń, wyświetla listę plików z konfliktamiźródło
Jeśli spróbujesz zatwierdzić, a jeśli wystąpią konflikty, git poda Ci listę aktualnie nierozwiązanych konfliktów ... ale nie jako zwykłą listę. Jest to zwykle to, czego chcesz, gdy pracujesz interaktywnie, ponieważ lista jest krótsza w miarę rozwiązywania konfliktów.
źródło
Być może zostało to dodane do Git, ale pliki, które wymagają jeszcze rozwiązania, są wymienione w komunikacie o stanie (status git) w następujący sposób:
Zauważ, że jest to sekcja Unmerged paths.
źródło
Zakładając, że wiesz, gdzie jest katalog główny git, $ {GIT_ROOT}, możesz to zrobić,
źródło
Zawsze używałem
git status
.można dodać
awk
na końcu, aby uzyskać tylko nazwy plikówgit status -s | grep ^U | awk '{print $2}'
źródło
Moje 2 centy tutaj (nawet jeśli jest wiele fajnych / działających odpowiedzi)
W tym utworzyłem ten alias
.gitconfig
który pokaże mi tylko nazwy plików z konfliktami ... nie całą ich ścieżkę :)
źródło
Oto, czego używam do listy zmodyfikowanych plików odpowiednich do podstawienia wiersza poleceń w bash
Aby edytować listę, użyj
$(cmd)
podstawienia.Nie działa, jeśli w nazwach plików są spacje. Próbowałem użyć
sed
klawisza Escape lub zacytować spacje, a lista wyjściowa wyglądała poprawnie, ale$()
podstawienie nadal nie działało zgodnie z oczekiwaniami.źródło
Narzędzie kreatora git https://github.com/makelinux/git-wizard zlicza osobno nierozwiązane zmiany w konflikcie (kolizje) i nie scalone pliki. Konflikty muszą być rozwiązywane ręcznie lub za pomocą narzędzia wielofunkcyjnego. Rozwiązane nie scalone zmiany można dodawać i zatwierdzać zwykle za pomocą git rebase - kontynuuj.
źródło
niewielka zmienność odpowiedzi Charlesa Baileya, która daje więcej informacji:
źródło
Jak podkreślono w innych odpowiedziach, możemy po prostu użyć polecenia git status, a następnie poszukać plików wymienionych w obszarze Unmerged paths:
źródło