#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
это не идеально здесь, могу ли я использовать какой-то другой (более элегантный) подход?