В ответе git cat-file
используется команда git "plumbing" , которая, как правило, лучше подходит для построения сценариев, поскольку выходной формат вряд ли изменится.Те, которые используют git show
и git rev-parse
, могут нуждаться в изменении со временем, так как они используют команды фарфор .
Функция bash, которую я использовал длядолгое время использует git rev-list
:
gitismerge () {
local sha="$1"
msha=$(git rev-list -1 --merges ${sha}~1..${sha})
[ -z "$msha" ] && return 1
return 0
}
Список команд фарфора / сантехники можно найти в документации для команды верхнего уровня git .
Thisкод использует git-rev-list с определенным gitrevisions запросом ${sha}~1..${sha}
способом, который печатает второго родителя SHA, если он существует, или ничего, если его нет, что являетсяточное определение коммита слияния.
В частности, SHA~1..SHA
означает, что включает коммиты, которые достижимы из SHA, но исключают коммиты, которые достижимы SHA ~ 1, который является первым родителем SHA .
Результаты сохраняются в $ msha и проверяются на пустоту с помощью bash [ -z "$msha" ]
, который завершается с ошибкой (возвращает 1), если она пуста, или передачей (возвращается 0), если она не пуста.