我正在遵循这个链接的步骤:https://docs.github.com/cn/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository
我有一个名为my-repo
的仓库。
它下面的目录结构如下:
MyProject
|
------ UI
|
------ DB
|
------ SERVER
|
------ ANDROID
我希望将上述
ANDROID
目录分离出来,创建一个名为my-repo-android
的新仓库。我已经采取了以下措施:
Cloned the repository
git clone git@bitbucket.org:myproject/my-repo.git
Go into that directory:
cd my-repo
Remove origin to avoid any push by mistake
git remote rm origin
Run filter repo command
git filter-repo --path MyProject/ANDROID --path-rename ANDROID/:
ANDROID
那样获得根目录,相反地,我仍然看到目录为MyProject/ANDROID
,其中的其他所有内容都被删除。我哪里做错了?
如何正确使用
filter-repo
的path-rename
选项,以使项目结构从MyProject\ANDROID
更改为直接位于根目录下的ANDROID
目录?编辑:
根据下面的评论和答案,以下命令可行:
git filter-repo --path MyProject/ANDROID/ --path-rename MyProject/ANDROID/:ANDROID/
在此之后,我远程创建了一个新的代码库并运行了以下命令:
Add remote origin
git remote add origin git@bitbucket.org:mypronect/androidRepo.git
Master branch
git branch -M master
Pull first
git pull origin master --allow-unrelated-histories
Push
git push -u origin master
现在我可以在Bitbucket上的新的androidRepo
正确地看到ANDROID
目录。
当我打开任何文件时,我也可以看到历史记录。因此,filter-repo
已按预期工作。
但是,我只看到master
分支。我没有看到其他历史分支和标签。(我们为每次发布标记/创建一个单独的分支)。
我错过了什么?如何保留与ANDROID
相关的所有分支和标签?
我尝试了以下命令,但它没有生效:
git push --all origin
--path-rename
是针对ANDROID/
还是MyProject/ANDROID/
目录的? - LeGEC--path-rename MyProject/ANDROID:ANDROID
吗? - LeGEC