#git
#git
Вопрос:
Я пытаюсь избежать необходимости анализировать вывод «git status». Есть ли команда, которая вернет список всех зафиксированных файлов, которые будут отправлены при следующей команде «git push»?
Комментарии:
1. Обратите внимание, что
git push
на самом деле файлы не передаются. Он отправляет коммиты . Вы либо отправляете весь коммит (который содержит все файлы), либо не отправляете его вообще. Нужно обратить внимание на то, что отличается в коммит (ах), которые вы будете отправлять, а не на то, какие файлы в них находятся, потому что в них все файлы.
Ответ №1:
Вы должны попробовать git diff --stat --cached origin/<<branch name>>
Пример : git diff --stat --cached origin/master
--stat
Генерируется diffstat. Для --cached
просмотра изменений, которые вы внесли.
Дайте мне знать, если это сработает.
Комментарии:
1. Потрясающе. Обязательно отметьте его как правильный ответ.
Ответ №2:
Короткий ответ
git log --pretty=format:"" --name-only @{upstream}.. | sort -u
Объяснение
--pretty=format:""
для подавления информации о фиксации
--name-only
запрашивает список файлов
@{upstream}
это конструкция для описания удаленной ветви, с которой связан текущий. Это не заполнитель, он должен быть записан как есть.
@{upstream}..
(обратите ..
внимание, что это диапазон) означает все в текущей ветке, но неизвестно удаленной ветке.
Конечно, более полезно отсортировать его, если у вас много коммитов, изменяющих одни и те же файлы. Используйте | sort -u
для этой цели.
Последнее замечание: сделайте это псевдонимом!
# pf = Push Files (could be whatever else you prefer)
git config --global alias.pf '!git log --pretty=format:"" --name-only @{upstream}.. | sort -u'
# then just
git pf
Комментарии:
1. это не даст мне список файлов без необходимости анализа выходных данных…
2. Вы абсолютно правы, когда я перечитываю ваш вопрос, я понимаю, что я был не в теме с моим
git push --dry-run
. Отредактировано.