Как git squa sh имеет дело с удаленными файлами? - PullRequest
1 голос
/ 23 января 2020

Скажем, я добавил файл A в качестве коммита, а затем решил удалить файл A. Вместо использования git --amend я вместо этого создаю другой коммит, который удаляет файл A, я знаю, что это плохая практика. Однако, если я хочу объединить свою ветку, используя git merge --squa sh. Как git squa sh справляется с двумя коммитами? Сохраняет ли он некоторую информацию о файле A в сдавленном коммите или файл A вообще не будет отображаться в коммите.

Еще один способ думать об этом, если файл A был файлом 1 ГБ. Я не хочу, чтобы мой git сохранял файл 1 ГБ в своей истории, когда я удаляю файл А и сдавливаю объединенную ветвь.

1 Ответ

4 голосов
/ 23 января 2020

При выполнении сква sh слияния Git принимает все изменения от начального коммита до конечного коммита и производит один коммит, который эквивалентен. Таким образом, если в рамках принятых вами коммитов вы добавили и удалили файл, то результатом net будет отсутствие файла, и Git не будет ничего записывать об этом файле в результирующем коммите.

Объекты, на которые ссылаются эти коммиты, могут все еще существовать в вашем хранилище в течение некоторого времени, даже если они не находятся в истории вашей ветви, так как на них может ссылаться reflog (который хранит историю ваших веток), но в конечном итоге они будут удалены, если на них не ссылается ни одна ветка, тэг или другая ссылка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...