簡體   English   中英

如何將帶有子文件夾的存儲庫拆分為每個子文件夾的單獨存儲庫?

[英]How to split a repository with subfolders into separate repositories for each subfolder?

我有一個本地存儲庫,其中包含單獨子文件夾中的多個項目,我想將其拆分為單獨的、特定於項目的存儲庫,而不改變實際的文件夾結構。 這是文件夾樹當前的樣子:

bigfolder/
    .git/
    project1/
        subfolder1/
        subfolder2/
    project2/
        subfolder1/
        subfolder2/

我想要的是這個:

bigfolder/
    project1/
        .git/
        subfolder1/
        subfolder2/
    project2/
        .git/
        subfolder1/
        subfolder2/

我不想刪除頂層文件夾或將項目文件夾從它下面移出。 我只想擁有更小的、特定於項目的存儲庫,以保存每個項目文件夾中文件的提交歷史。

我嘗試按照本文 GitHub 文檔中的說明, 將子文件夾拆分到新存儲庫中,但是當我將bigfolder/存儲庫克隆到project1/文件夾中時,它bigfolder中的所有內容復制到project1文件夾中,包括所有項目文件夾。 使用git filter-repo刪除了所有新創建的項目文件夾中的文件,但新的 project1 文件夾除外,但文件夾樹完好無損。 我究竟做錯了什么? 提前致謝!

您可以使用git subtree將子目錄拆分為單獨的存儲庫。 該過程可能如下所示。

  1. 對於每個項目目錄,使用git subtree split將該目錄的歷史記錄移動到一個獨立的分支中:

     ref=$(git subtree split --prefix=project1) git branch project1-split $ref

    對每個項目目錄重復此操作。 這會將每個目錄的歷史記錄拆分為一個單獨的分支。

  2. 現在你有了它,你可以重新創建你的目錄層次結構:

     cd.. mkdir new-big-directory cd new-big-directory git clone -b project1-split../big-directory project1 git clone -b project2-split../big-directory project2

    這將為您提供所需的布局。 此時您可能需要重命名分支:

     git -C project1 branch -m project1-split main git -C project2 branch -m project2-split main

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM