Серия небольших статей о системе контроля версий, известной как Git!
Снимки
В предыдущей статье я упомянул, что системы контроля версий, как правило, оптимизируют хранение, сохраняя различия между файлами, а не совершенно новые копии, когда необходимо сохранить новую версию. Мы называем этот подход к контролю версий разностным.
Правда в том, что Git — это исключение, и это важно понимать.
Когда вы начинаете использовать Git, вы сообщаете ему, где находится ваш проект и за какими файлами он должен следить за вами.
Когда вы внесли изменения в один или несколько из этих файлов, вы можете выбрать момент для сохранения этих изменений. Мы называем этот процесс фиксацией или выполнением фиксации.
И когда вы, наконец, сделаете коммит, Git сохранит состояние всех файлов, которые он отслеживает, как версию вашего проекта. Мы называем это моментальным снимком. Это означает, что концептуально Git не сохраняет различия между файлами и даже не сохраняет состояние только измененных файлов. Вместо этого, когда вы совершаете коммит, Git сохраняет все ваши файлы в моментальном снимке, в котором записано, как они все выглядят в данный момент.
Затем он сохраняет уникальную ссылку на этот моментальный снимок, чтобы вы могли позже вернуть состояние ваших файлов к этому моменту или проверить, какие изменения были сделаны с момента создания моментального снимка. Вы можете думать об этом как об уникальном имени моментального снимка.
Конечно, хранить копии всех файлов вашего проекта каждый раз, когда вы делаете коммит, было бы невероятно неэффективно. Это потребует много работы и много места для хранения. Таким образом, для файлов, которые не изменились, моментальные снимки просто ссылаются на существующие неизмененные копии предыдущих моментальных снимков, а не сохраняют полностью новую копию. Только при изменении файла фиксация приведет к тому, что новая копия этого файла будет сохранена в моментальном снимке.
Все еще голоден? Сделай следующий глоток →