Существует GIT
хранилище (REPO1
). Давным-давно он имел следующую раскладку:
bin
file.sh
src
file.cpp
Затем bin был перенесен в CVS
(REPO2
). Макеты стали:
REPO1
src
file.cpp
REPO2
file.sh
Теперь я хочу переместить file.sh обратно в bin подпапку REPO1
с ее историей. Я перенес CVS
в новый GIT
репозиторий REPO3
, используя cvs2git
.
Истории репо:
REPO1 REPO3
N X
| |
| |
D |
| |
O2 O'2
| |
O1 O'1
- D - фиксация при удалении
bin
из REPO1
.
- O1 , O2 - общие коммиты. У них есть O'1 и O'2 братьев и сестер в
REPO3
, но с разными идентификаторами фиксации (дерево файлов изменено).
Теперь я хочу иметь следующую историю:
M
| \
N X
| |
D |
| /
O2
|
O1
Я пытался использовать git subtree -P bin REPO3
, но он дублировал историю file.sh в период, когда файл жил в REPO1
.
M
| \
N X
| |
D |
| |
O2 O'2
| |
O1 O'1
Затем я попытался использовать git checkout -b temp_branch O2; git cherry-pick O'2..X
, чтобы получить только "новые" коммиты от REPO3
, но это не удалось из-за разной компоновки REPO3
(нет папки bin ).
Может быть, есть более стандартный способ выполнить мою задачу? Или я пропускаю какой-то шаг, который бы мне помог?