У меня есть 4-летнее хранилище, которое реально не требует больше года истории.
В основном предполагаю, что хеши моего дерева выглядят как I
, и я хочу, логически, II
:
I) 0-1-2-3-4-5-6-7-8-9-a-b-c-d-e-f
II) a-b-c-d-e-f
Я видел совет обрезать историю примерно так:
git log --after="2018-12-28" --until="2018-12-31" #finding a good quiet period
git checkout --orphan trunc 4bf6824d4
git commit -m "Truncated history to 2019-12-29: a low activity point"
git fetch --all
git rebase --onto trunc 4bf6824d4 upstream/master
#OR
git cherry-pick 4bf6824d4..upstream/master
Затем удалите вышестоящий мастер и замените его на trunc, переименованный в мастер. Или заставить толкнуть. Я запустил этот сценарий, и вместо этого получился III
, но я подумал, что могу хотя бы приблизительно получить IV
.
III) g-h-i-j-k-l (h-l are b'-c'-d'-e'-f')
IV) g-b-c-d-e-f (like editing the parent of b only)
Разве это невозможно, потому что вы не можете редактировать какую-либо линию SHA?
Как я могу сделать так, чтобы все выполняемые работы, вероятно, слились с веткой замены ... Им всем придется вытянуть новую ветку и переназначить на нее диапазон своей работы?
Кроме того, почемуперебазирование дает мне несколько моментов, когда возникали конфликты, и мне приходилось сливаться с theirs
?