2015-06-30 3 views
0

Когда git делает фиксацию, он отражен в .git в каталоге только поменяны файлы или все файлы проекта?Как git-магазин фиксирует - как сохраняются изменения?

Почему git gc не предшествует после каждой фиксации?
Для чего была создана эта команда?

+4

Начать работу с https://git-scm.com/book/en/v1/Git-Internals-Git-Objects –

ответ

0

Каждая версия каждого файла хранится в каталоге .git. Итак, допустим, у вас есть три файла: A1, B1 и C1. Затем вы совершаете фиксацию, которая меняет A1 на A2. После этого .git будет содержать A1, B1, C1 и A2. Таким образом, все файлы проектов действительно находятся в каталоге .git, но добавлен только один, поскольку только один был изменен.

Две причины, по которым я могу думать о том, почему git gc не запускается после каждой фиксации: a) требуется время и b) он получает информацию о файлах, которые вы, возможно, захотите получить позже. Вы можете думать о git gc как о том, как очистить корзину в Windows; он не позволяет вам легко «деинсталлировать» файлы позже.

+0

«он не позволяет вам легко« деинсталлировать »файлы позже». Не могли бы вы объяснить это? git gc вызывает историю? –

+0

Это не разрушает историю, нет; если у вас есть файл в вашей истории, он всегда извлекается. То, что я имел в виду, это когда у вас есть фиксация, которую вы отмените с помощью 'git reset',' git commit -amend' или чего-то подобного. Вам, вероятно, не нужно беспокоиться об этом. –

+0

ОК, и если мы нажмем фиксацию из вашего примера - будет изменен только измененный файл? –

Смежные вопросы