我目前有一个文件结构,看起来像这样:
# C:\Repositories\VisualStudio\MyProject
.git # repository is one level above clientapp and includes other folders/paths than clientapp
afolder
clientapp
file1
file2
现在我想把clientapp
文件夹移到一个新的位置,并将其重命名为frontend
。然后我想只为frontend
创建一个新的存储库。
# inside C:\Repositories\MyProject\frontend (no more VisualStudio in the path!)
.git
<all the frontend folders and files>
现在问题来了:当然,我现在丢失了原始clientapp
的历史记录(现在:frontend
)文件夹,因为我创建了一个新仓库。有什么方法可以把关于原始clientapp
文件夹的提交复制到我为frontend
创建的新仓库中吗?
1条答案
按热度按时间7kqas0il1#
TLDR:将原始存储库过滤到想要保留的文件夹中,然后从新存储库中提取它。
1.下载并使用
git filter-branch
官方推荐的git-filter-repo。1.将存储库筛选到相关文件(确保之前有备份!):
1.将clientapp内的文件移动到根目录
1.转到新存储库,将远程存储库添加到原始存储库:
1.将文件和历史记录从该分支提取到存储库B(仅包含要移动的目录)。
1.删除到存储库A的远程连接。
1.从新存储库推送
1.删除原始存储库的副本(只包含过滤后的文件夹)。如果需要,可以再次克隆它。愉快地使用具有完整提交历史记录的新存储库。
进一步阅读:关于如何move files from one repository to another, preserving git history的中等文章,特别是关于 * 将文件合并到新的存储库B* 的部分。