Я знаю, что Rebase является (в комплекте) расширением, а Graft является ядром (который заменил расширение Transplant (в комплекте)).
graft
документируется как:
скопировать изменения из других ветвей на текущую ветвь
Эта команда использует Mercurial merge logic для копирования отдельных изменений из других ветвей без объединения ветвей в графе истории. Это иногда называют "backporting" или "cherry-picking".
rebase
документируется как:
Rebase позволяет перемещать объекты в истории Mercurial (используя ряд внутренних слияний). Это имеет много применений:
- перемещение наборов изменений между ветвями
- "линеаризация" истории
- переупорядочение наборов изменений
- сворачивание нескольких изменений в один набор изменений
Оба, похоже, используют слияние для перемещения или копирования наборов изменений между ветвями.
Графические копии. Перемещение перемещается. Но rebase --keep
копии.
Так часто кажется, что я могу выполнить свою задачу по копированию набора изменений в любом случае. Имеет ли значение то, что я использую? Когда я должен отдать предпочтение другому?
например. следует ли прививать только при копировании в другую именованную ветвь? Или только когда есть только один набор изменений?
Изменить: может ли быть, что rebase является потенциально опасным надмножеством трансплантата, но может использоваться только с draft
наборами изменений во время разработки для редактирования локальной истории, тогда как трансплантат является безопасным подмножеством rebase, который может использоваться с public
изменения во время обслуживания для резервного копирования?