Я пытаюсь обновить скрипт документации на Python, так как мы с коллегами недавно начали работать с GIT.
Сейчас я пытаюсь извлечь список имен измененных файлов в ветке через os.system(..). Есть ли способ получить список с именами измененных файлов в ветке, если она уже была слита в другую ветку? Заранее спасибо!
Когда я пытаюсь использовать «git log --name-only --pretty=format: <feature_branch>», я получаю имена Feature_branch измененных файлов, а также имена из родительской ветки, которая является master_branch, из которой он был создан, предоставляя мне не только файлы, с которыми мы работали в ветке, но и всю историю, которая меня не интересует.
Я также пытался выполнить «git log --name-only --pretty=format: <master_branch>..<feature_branch>», но список оказался пустым, и, судя по тому, что я прочитал, это может быть потому, что Feature_branch уже объединен с master_branch.
Есть ли способ получить список с именами измененных файлов в ветке, если она уже была слита в другую ветку?
Найдите слияние, тогда git diff --name-only $merge^1...$merge^2
. См. синтаксис с тремя точками ... в документации git diff
Вы можете выполнить поиск по стандартной теме слияния «Функция слияния ветки», используя синтаксис поиска сообщений, git rev-parse "master@{/^Merge branch 'feature'}"
или, если эта ветка объединяется несколько раз, вы можете использовать git log --pretty=%H --first-parent --grep "^Merge branch 'feature'" master
.
Расширено из ответа на сообщение Находите точку ветвления с помощью Git?
Используйте команду Magic bash в ответе, чтобы найти хеш фиксации <branch_point>.
diff -u <(git rev-list --first-parent <feature_branch>) \
<(git rev-list --first-parent master) | \
sed -ne 's/^ //p' | head -1
Затем используйте git diff --name-only <branch_point>..<feature_branch>
для отображения измененных файлов.
Однако при этом будет найдена самая старая точка разделения, а не самая последняя.
Спасибо что подметил это. Я также обнаружил, что если в ветке функций есть объединенный мастер, это не будет работать должным образом.
Большое спасибо! Это сработало, как и ожидалось. Теперь мне интересно, есть ли способ получить SHA из этого слияния только с именами Feature_branch и master_branch, а также с предыдущим SHA фиксации/слияния, поскольку мне приходилось получать их вручную из инструмента Fork.