Подтвердить что ты не робот

Как показать измененное имя файла только с помощью git журнала?

Можно ли показать измененное имя файла только с git log?

4b9b3361

Ответ 1

Спасибо за ваши ответы @mvp, @xero, я получаю то, что хочу получить на оба ваших ответа.

git log --name-only 

или

git log --name-only --oneline

для краткости.

Ответ 2

Я предполагаю, что вы можете использовать флаг --name-only. что-то вроде:

git log 73167b96 --pretty="format:" --name-only

i лично использую git show для просмотра файлов, измененных в фиксации

git show --pretty="format:" --name-only 73167b96

(73167b96 может быть любым именем фиксации/тега)

Ответ 3

Это дает почти то, что вам нужно:

git log --stat --oneline

Идентификатор фиксации + короткая одна строка все еще остается, а затем список измененных файлов с помощью этой фиксации.

Ответ 4

Я наткнулся на поиск подобного ответа без ограничения "git log". Ответы здесь не дали мне то, что мне нужно, но это сделало так, я добавлю его, если другие считают это полезным:

git diff --name-only

Вы также можете связать это со стандартными указателями фиксации, чтобы увидеть, что изменилось с момента конкретной фиксации:

git diff --name-only HEAD~3
git diff --name-only develop
git diff --name-only 5890e37..ebbf4c0

Это лаконично предоставляет имена файлов, которые отлично подходят для сценариев. Например:

git diff --name-only develop | while read changed_file; do echo "This changed from the develop version: $changed_file"; done

#OR

git diff --name-only develop | xargs tar cvf changes.tar

Ответ 5

Теперь я использую следующее, чтобы получить список измененных файлов, которые имеет моя текущая ветвь, сравнивая их с master (с легкостью меняются переменные):

git log --oneline --pretty="format:" --name-only master.. | awk 'NF' | sort -u

Раньше я полагался на это:

git log --name-status <branch>..<branch> | grep -E '^[A-Z]\b' | sort -k 2,2 -u

который выводит только список файлов и их состояние (добавлено, изменено, удалено):

A   foo/bar/xyz/foo.txt
M   foo/bor/bar.txt
...

Параметр -k2,2 для сортировки делает его сортировкой по пути к файлу вместо типа изменения (A, M, D,).

Ответ 6

Если вам нужны имена просто, например:

dir/subdir/file1.txt
dir/subdir2/file2.sql
dir2/subdir3/file6.php

(который я использую в качестве источника для команды tar), вам также потребуется отфильтровать сообщения о фиксации.

Для этого я использую следующую команду:

git log --name-only --oneline | grep -v '.{7} '

Команда Grep исключает (-v param) каждую строку, которая начинается с семи символов (это длина моего хэша git для git log), за которым следует пробел. Поэтому он отфильтровывает каждую строку git hash message и оставляет только строки с именами файлов.

Одним из полезных улучшений является добавление uniq для удаления повторяющихся строк, чтобы он выглядел следующим образом:

git log --name-only --oneline | grep -v '.{7} ' | uniq