Git - 将子文件夹推送到不同的存储库

标签 git github version-control gitlab

我有一个包含许多文件和项目的大型存储库。此存储库中的子文件夹之一必须是一个新的、独立的存储库。

我不需要在新仓库中保留历史记录,但我必须能够随时使用原始仓库的更改更新新仓库。

这个想法是旧的 repo 是一个私有(private)的内部 gitlab,而新的 repo 是已部署项目的公共(public) repo。

我该怎么做?

最佳答案

您可以将新仓库视为旧仓库的子树,并通过git subtree push 用旧仓库更新新仓库。详细步骤如下:

假设旧仓库有文件夹 project1project2project3 等用于不同的项目。并且 project1 已在新的 repo 中进行管理。

首先,将旧仓库中的 project1 文件夹替换为新仓库。

# Copy project1 folder out of old repo
# Delete the project1 folder in old repo, then use the commands in old repo
git add .
git commit -m 'delete project1 folder in old repo'
git subtree add --prefix=project1 <URL for new repo> master

现在旧仓库中的 project1 文件夹是新仓库的子树。您可以在旧存储库中进行更改和提交(git commit)

当你需要用旧的repo更新新的repo时,你可以使用:

git subtree push --prefix=project1 <URL for new repo> master

现在将更新新的 repo。

关于Git - 将子文件夹推送到不同的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45565464/

相关文章:

ios - Xcode 在某些文件中找不到 Swift 桥接头文件

git - 更改 Git 桌面中的文件夹

git - 为什么 Github 在按照屏幕上的说明推送新的 repo 时要求输入用户名/密码?

ms-access - Access VBA 代码的版本控制?

git - 是否有导致冲突的其他分支提交的引用?

git - 如何在gitlab中创建和提交分支

git - Intellij 作为 merge 工具无法正确检测编码

html - 如何在 GitHub 上托管我的作品集网站?

git - 如何将我在 Github 上的所有提交更改为另一个提交?

git - .xccheckout 有树冲突