Я сталкиваюсь со странным поведением журнала git при фильтрации по определенному каталогу. Вот команда, которую я использую:
18:05:04 ~/Documents/01_repo/b2b-crm (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
Однако, когда я запускаю команду снова, с удаленным фильтром каталогов, я получаю другой список измененных файлов:
18:05:12 ~/Documents/01_repo/b2b-crm (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
COMMIT: 6e0d17558b091d00fe47304b588ec5e066c09d37
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParameters.cmp
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponents.cmp
M force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponentsController.js
M force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponent.cmp
M force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponentController.js
M force-app/main/default/classes/GE_CL_ComponentList_Controller.cls
M force-app/main/default/classes/GE_CL_ComponentList_Controller_Test.cls
M force-app/main/default/classes/RD3_ContractGenerator.cls
M force-app/main/default/classes/RD3_ContractGenerator_Test.cls
COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
Как видите, список ресурсов меняется, хотя все ресурсы имеют один и тот же путь. Почему git log
возвращает разные результаты для одного и того же фильтра каталогов при нескольких выполнениях?
Проблема возникает как с zsh, так и с bash.
Я использую git версии 2.45.0.
Использование gitk для графического отображения состояния:
gitk 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e
gitk 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- force-app/main/default/
Я замечаю, что, наложив фильтр на каталог, я скрываю фиксацию, на которой я нахожусь, на уровне оформления заказа. Может ли кто-нибудь сказать мне, как избежать этого результата?
Полагая, что дополнительная информация может только помочь, я также показываю результат git diff в различных формах, и как видите, даже здесь результат у меня не складывается, возможно, причина в том, что эти файлы не были изменены по сравнению с текущей веткой?
10:36:20 ~/Documents/01_repo/b2b-crm (uat)
└─▶ $ git diff --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
10:36:25 ~/Documents/01_repo/b2b-crm (uat)
└─▶ $ git diff --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e b0341db807cf7e4fa6b0dff63cf7eabca057308e
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
10:36:35 ~/Documents/01_repo/b2b-crm (uat)
└─▶ $ git diff --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
Блин, ты прав @RomainValeri! Вчера от усталости за день я не заметил этой простой детали! Однако меня интересует журнал возврата с отсутствующим коммитом, но при этом позволяющий фильтровать каталоги. Можете ли вы объяснить мне, что с ним происходит? Какой скрытый механизм стоит за этим?
Да, я тоже задавался вопросом, почему коммит не отображается в вашем первом журнале. Пока без понятия, извини. Давайте продолжим поиск.
Вы уже пробовали с --full-history
?
К сожалению нет, я об этом особо не думал! Я только что попробовал, и это работает!! @knittl ОГРОМНОЕ СПАСИБО, сейчас я приступлю к созданию ответного сообщения.
Я хотел поделиться решением проблемы, с которой я столкнулся при использовании git log с фильтром каталогов. Первоначально при запуске команды:
15:28:46 ~/Documents/01_repo/b2b-crm (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
Я получил список измененных файлов, которые не соответствовали моим ожиданиям. Удаление фильтра каталогов изменило вывод, отображая больше измененных файлов.
После некоторых исследований и с помощью сообщества, особенно @knittl, я обнаружил, что недостающий параметр — --full-history
. Этот параметр имеет решающее значение для включения в журнал всех коммитов, затронувших указанный путь, даже если изменение было сделано в ветке, которая позже была объединена.
Вот правильная команда, которая обеспечивает ожидаемый результат:
15:28:53 ~/Documents/01_repo/b2b-crm (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --full-history --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
COMMIT: 6e0d17558b091d00fe47304b588ec5e066c09d37
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParameters.cmp
M force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponents.cmp
M force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponentsController.js
M force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponent.cmp
M force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponentController.js
M force-app/main/default/classes/GE_CL_ComponentList_Controller.cls
M force-app/main/default/classes/GE_CL_ComponentList_Controller_Test.cls
M force-app/main/default/classes/RD3_ContractGenerator.cls
M force-app/main/default/classes/RD3_ContractGenerator_Test.cls
COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
С помощью этой команды git log теперь показывает все файлы, измененные по указанному пути, независимо от ветки, в которой были внесены изменения.
Я надеюсь, что это решение может быть полезно другим, кто оказался в такой же ситуации.
Такая подробная обратная связь очень полезна. Отличная работа.
«Список ресурсов»? Что это такое? Вы имеете в виду список путей? Они не разные. Список коммитов есть. Единственная разница между двумя журналами — наличие/отсутствие коммита
6e0d17