Я использую git subtree add
для импорта библиотеки в другое хранилище git в указанной подпапке c. Это отлично работает. Затем я пытаюсь извлечь предыдущую ревизию хранилища (которая теперь содержит библиотеку в качестве подпапки), но когда я это делаю, файлы библиотеки извлекаются в папку root хранилища, а не в подпапку, которую я указал, когда делал это. git subtree add
. Ниже приведены шаги, иллюстрирующие ситуацию:
Создайте репозиторий и зафиксируйте пару файлов:
mkdir lib1repo
cd lib1repo
touch root
git init
git add root
git commit -m 'initial commit'
touch file1.cpp
git add file1.cpp
git commit -m 'added file 1'
touch file2.cpp
git add file2.cpp
git commit -m 'added file 2
Создайте другой репозиторий и используйте git subtree add
, чтобы добавить библиотеку в качестве подпапки:
cd ..
mkdir newrepo
cd newrepo
touch newreporoot
git init
git add newreporoot
git commit -m 'initial new repo commit'
git subtree add -P lib1 ../lib1repo/ master
Теперь у newrepo есть подпапка lib1, как и ожидалось.
op@op-X556UQK:~/workspace/newrepo$ ls
lib1 newreporoot
Затем я извлекаю более ранний коммит, например, после добавления file2. cpp:
op@op-X556UQK:~/workspace/newrepo$ git checkout 8632947131eb2f217e7fd2fd817fdfd5e2d95e77
Note: checking out '8632947131eb2f217e7fd2fd817fdfd5e2d95e77'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 8632947 added file 2
Когда я проверяю содержимое папки, я вижу файлы lib1 в папке репо root, которая не находится внутри lib1.
op@op-X556UQK:~/workspace/newrepo$ ls
file1.cpp file2.cpp root
Есть ли способ получить более раннюю версию и иметь файлы библиотеки в папке, которую я указал, когда делал git subtree add
?