Как объединить обновления (последние несколько коммитов) из исходного (локального) репозитория с подкаталогом, созданным с помощью поддерева git?

#git #merge #repository #git-subtree

Вопрос:

Допустим, у меня есть мини-проект, история git которого выглядит так:

 $ git log --graph --decorate --pretty=oneline --all --abbrev-commit
* b53390c (HEAD -> main) mini-project 3
* d4ba0ec mini-project 2
* 63d4aff mini-project 1
 

…и репо корневого проекта, история которого выглядит так:

 $ git log --graph --decorate --pretty=oneline --all --abbrev-commit
* 70925ba (HEAD -> main) root 2
* 538af79 root 1
 

Я хочу добавить мини-проект в качестве вложенной папки в корневое хранилище. Я могу добавить обновленное содержимое вручную, а затем выполнить одну фиксацию в корневом репозитории. Тем не менее, я хочу сохранить коммиты мини-проекта ( b53390c , d4ba0ec , 63d4aff ).

Я нашел способ сделать это с помощью git subtree ; мне показалось, что это идеальный инструмент для этого:

 $ git subtree add -P mini-project ../mini-project/.git main
git fetch ../mini-project/.git main
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), 713 bytes | 1024 bytes/s, done.
From ../mini-project/
 * branch            main       -> FETCH_HEAD
Added dir 'mini-project'

$ git log --graph --decorate --pretty=oneline --all --abbrev-commit
*   16160c3 (HEAD -> main) Add 'mini-project/' from commit 'b53390c1057cb58ba34a6775b5c0c1334bba2cb4'
|
| * b53390c mini-project 3
| * d4ba0ec mini-project 2
| * 63d4aff mini-project 1
* 70925ba root 2
* 538af79 root 1
 

Однако вот мой вопрос. Как только в мини-проекте появится больше коммитов, как мне объединить обновления (см. ea486b4 8f78c20 Ниже) в mini-project подкаталог корневого репозитория?

 $ git log --graph --decorate --pretty=oneline --all --abbrev-commit
* ea486b4 (HEAD -> main) mini-project 5
* 8f78c20 mini-project 4
* b53390c mini-project 3
* d4ba0ec mini-project 2
* 63d4aff mini-project 1
 

Я не думаю git subtree merge , что командование поможет мне здесь.

Если git subtree это не идеально здесь, могу ли я использовать какой-то другой (более элегантный) подход?