我正在关注这个:https://docs.github.com/en/get-started/using-git/splitting-a-subfolder-out-into-a-new-repository
我有一个名为my-repo
其下面的目录结构如下:
MyProject
|
------ UI
|
------ DB
|
------ SERVER
|
------ ANDROID
我想分开ANDROID
上面的目录到它自己的新存储库中,称为my-repo-android
我为此做了以下事情:
-
克隆存储库
git clone [email protected]:myproject/my-repo.git
-
进入该目录:
cd my-repo
-
删除原点以避免错误推送
git remote rm origin
-
运行过滤器 repo 命令
git filter-repo --path MyProject/ANDROID --path-rename ANDROID/:
命令成功运行。但是,不是将根目录获取为ANDROID
,我仍然看到目录为MyProject/ANDROID
删除所有其他内容。
我究竟做错了什么?
如何使用filter-repo
path-rename
正确选择,以便项目结构从MyProject\ANDROID
直接ANDROID
根目录?
Edit:
根据下面的评论和答案,以下命令有效:
git filter-repo --path MyProject/ANDROID/ --path-rename MyProject/ANDROID/:ANDROID/
之后,我远程创建了一个新的存储库并运行以下命令:
-
添加远程源
git remote add origin [email protected]:mypronect/androidRepo.git
-
主分支
git branch -M master
-
先拉
git pull origin master --allow-unrelated-histories
-
Push
git push -u origin master
现在我可以看到ANDROID
新目录正确androidRepo
在位桶上。
当我打开任何文件时,我也可以看到历史记录。因此filter-repo
已按预期工作。
然而我只看到master
分支。我没有看到任何其他历史分支和标签。 (我们为我们所做的每个版本标记/创建一个单独的分支)。
我缺少什么?如何保留与相关的所有分支和标签ANDROID
还有?
我尝试了以下命令,但它不起作用:
git push --all origin
你忘了MyProject
before ANDROID
in the --path-rename
选项。和
-
--path MyProject/ANDROID
你在告诉filter-repo
仅保留路径MyProject/ANDROID
folder.
-
--path-rename ANDROID/:
你正在转换ANDROID
基本上文件夹到根文件夹。
我的猜测是你filter-repo
没有找到ANDROID
文件夹,因为它在里面MyProject
,因此无法重命名它。
最终命令可能是:
git filter-repo --path MyProject/ANDROID/ --path-rename MyProject/ANDROID/:
或者,相应的快捷方式:
git filter-repo --subdirectory-filter=MyProject/ANDROID
EDIT: 我以为你想制作content of the ANDROID
文件夹作为根,相反,您似乎想移动ANDROID
文件夹来自./MyProject
to ./
。在这种情况下@LeGEC 明白了这一点--path-rename MyProject/ANDROID:ANDROID
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)