Сохранится ли история после git Squash?
Как известно, git хранит историю, но что будет в этом варианте:
Я создаю новую ветку, пушу в нее 10 изменений и RSA ключ, к примеру, одним коммитом. Потом другим коммитом удаляю RSA ключ.
Если я сделаю обычный merge из нее в мастер, ключ останется в истории, а в случае со squash?
Ответы (1 шт):
Оригинальные коммиты не будут присутствовать в истории мастера. Там будет создан один коммит с суммарными изменениями. Так что в истории мастера ключа не будет.
Но если ничего не делать, то коммиты останутся в репозитории, так как на них ссылается оригинальная ветка, из которой вы сливали изменения в мастер. Если вы после merge с опцией --squash удалите ветку, которую сливали, а также все другие ветки, которые используют эти коммиты, то такие коммиты станут недостижимыми (т.е. мусором). Значит, если вы почистите мусор с помощью git gc (или это произойдет автоматически), то оригинальные коммиты будут удалены.
Нужно понимать, что этим вы измените только локальный репозиторий. Вы можете удалить соответствующую ветку в remote репозитории, но изменения из нее уже мог запулить кто-то в свой репозиторий. Так что, если вы уже запушили эти коммиты, то нет никакой гарантии, что в других репозиториях они будут почищены.