Наведение порядка в истории с помощью rebase (и золотое правило)
Это самая запутанная тема в курсе, поэтому мы пойдём медленно. В прошлом уроке мы видели merge — один способ объединить работу из ветки, который оставляет коммит слияния и сохраняет обе линии такими, какими они были. Теперь мы познакомимся со вторым способом, git rebase: он «переигрывает» коммиты ва
rebase — это как взять написанные вами страницы и переписать их в конце обновлённой тетради команды — как будто вы написали их там с самого начала. Результат выглядит аккуратно и прямо, но это новые страницы. Поэтому вы не переписываете страницы, которые уже отдали другим, — у них по-прежнему старые страницы, и это создаёт путаницу.
- git rebase
- Переигрывает коммиты текущей ветки так, чтобы они начинались от вершины другой ветки, создавая линейную историю. Исходные коммиты заменяются новыми коммитами с новыми хешами.
- Линейная история
- История, которая представляет собой одну прямую линию коммитов, без развилок и без коммита слияния — каждый коммит находится прямо поверх предыдущего.
- Золотое правило
- Никогда не делайте rebase коммитов, которые вы уже отправили (push) или которыми поделились с другими. rebase переписывает хеши, поэтому он безопасен только для приватной локальной работы.
- Хеш коммита
- Уникальный идентификатор каждого коммита (отпечаток пальца). Если что-либо в коммите меняется — включая его родителя — он получает новый хеш и тем самым становится другим коммитом.
- Переигрывание
- Действие, при котором rebase берёт каждый из ваших коммитов и заново применяет его, один за другим, поверх вершины другой ветки — так и создаются новые коммиты.