git - это - убрать файл из коммита




Как указать только имена файлов, которые изменились между двумя коммитами? (8)

У меня есть куча коммитов в репо. Я хочу просмотреть список файлов, измененных между двумя коммитами: от SHA1 до SHA2.

Какую команду я должен использовать?


Добавьте псевдоним ниже в ваш файл ~/.bash_profile , затем запустите, source ~/.bash_profile ; теперь в любое время вам нужно увидеть обновленные файлы в последних файлах фиксации, запуска, showfiles из вашего репозитория git.

alias showfiles='git show --pretty="format:" --name-only'

Использовать git log --pretty = oneline> C: \ filename.log

который будет регистрировать только oneline (--pretty = oneline), который является именем измененного файла. Также будет записывать все данные в выходной файл.


Как сказал в своем ответе артфуробот:

git diff --name-status [SHA1 [SHA2]]

Мой пример:

git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997 
4b95d595812211553070046bf2ebd807c0862cca
M       views/layouts/default.ctp
M       webroot/css/theme.css
A       webroot/img/theme/logo.png

На основе git diff --name-status я написал расширение git-diffview git, которое отображает иерархическое древовидное представление того, что изменилось между двумя путями.


Также обратите внимание, если вы просто хотите увидеть измененные файлы между последней фиксацией и той, которая была перед ним. Это отлично работает: git show --name-only


Чтобы добавить ответ @ artfulrobot, если вы хотите показать измененные файлы между двумя ветвями:

git diff --name-status mybranch..myotherbranch

Будьте осторожны с приоритетом. Если сначала разместить новую ветвь, тогда будут отображаться файлы как удаленные, а не добавленные.

Добавление grep может дополнительно улучшить ситуацию:

git diff --name-status mybranch..myotherbranch | grep "A\t"

Затем будут показаны только файлы, добавленные в myotherbranch .


git diff --name-only SHA1 SHA2

где вам нужно только включить достаточное количество SHA для идентификации коммитов. Вы также можете сделать, например

git diff --name-only HEAD~10 HEAD~5

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


git diff --name-status [SHA1 [SHA2]]

как -name-only, за исключением того, что вы получаете простой префикс, рассказывающий вам, что случилось с файлом (изменено, удалено, добавлено ...)

git log --name-status --oneline [SHA1..SHA2]

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

  • если вас интересует только то, что случилось с определенными файлами / папками, которые вы можете добавить -- <filename> [<filename>...] в версию git log .

  • если вы хотите узнать, что произошло для одной фиксации, назовите ее SHA1, затем выполните
    git log --name-status --oneline [SHA1^..SHA1]

Флаги состояния файла:
M изменено - файл был изменен
C copy-edit - Файл скопирован и изменен
R rename-edit - Файл был переименован и изменен
Добавлен файл - Добавлен файл
D удален - Файл удален
U unmerged - Файл имеет конфликты после слияния





git-show