我有一个包含许多文件和项目的大型代码库。其中一个子文件夹需要成为一个独立的新仓库。
我不需要在新仓库中保留历史记录,但是我必须能够随时从原始代码库中将更改更新到新仓库中。
这个想法是旧的代码库是私人的内部GitLab,而新的代码库是用于部署项目的公共代码库。
如何实现这一点?
我不需要在新仓库中保留历史记录,但是我必须能够随时从原始代码库中将更改更新到新仓库中。
这个想法是旧的代码库是私人的内部GitLab,而新的代码库是用于部署项目的公共代码库。
如何实现这一点?
git subtree push
更新新存储库。以下是详细步骤:project1
,project2
,project3
等。而 project1
已经在新存储库中管理。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
)。
当您需要通过旧仓库更新新仓库时,可以使用以下命令:
git subtree push --prefix=project1 <URL for new repo> master
现在新的代码库将会更新。
git subtree push --prefix=project1 <新仓库的URL> master
。 - Sig如果您只需要从私有存储库更新公共存储库,而不需要相反方向的更新,则可以使用:
C:\privateRepo> git subtree push --prefix=public ..\publicRepo publicBranch
这将复制所有访问子文件夹public
的提交(复制将只包含在该子文件夹中的文件信息),并将这些提交推送到位于分支publicBranch
的C:\publicRepo
存储库中。
git filter-branch
及其subdirectory-filter
选项创建新提交,然后将其提取到子存储库中,并将其移植(可能再次使用filter-branch
)到历史树上。