Является ли Git фиксацией атома?

Крюк обновления может отклонять части коммита и разрешать другим.

update() в get_pack.c запускается в цикле, который затем вызывает перехват обновления, возможно, несколько раз во время фиксации. Каждый раз, когда вызывается перехват обновления, он может вернуть сбой, по-видимому, позволяя обновлять некоторые refs, а некоторые не обновляться, если отклонено.

Использует ли функция Git крючок обновления, позволяющий, возможно, часть фиксации преуспеть, а некоторый сбой означает, что Git commit не является атомарным?

Или что мне здесь не хватает? Спасибо.

Ответ 1

Да, фиксации являются атомарными. Невозможно отклонить часть фиксации.

Крюк обновления может вызываться несколько раз во время одиночного push (не commit), если одновременно выдвигаются несколько ветвей. Это позволяет принятия обновлений для некоторых веток при отказе от обновлений другим, но каждый принятое обновление все равно укажет на полную фиксацию при нажатии хранилище.