簡體   English   中英

Git的。 更改存儲庫根文件夾

[英]Git. Change repository root folder

我的項目位於文件夾C:/projects/NameOfProject/MyCode/.git位於文件夾MyCode/ ,因此只有MyCode的內容位於存儲庫中。

最近,我補充說,在該文件夾的一些其他文件OtherFiles/關系到文件夾中的項目NameOfProject/ 我不能移動這些到MyCode/由於文件之間的關系MyCode/OtherFiles/ 現在,我需要以某種方式更改存儲庫設置,文件夾MyCode/OtherFiles/將位於存儲庫的根目錄。 此外,非常需要繼續提交歷史記錄:更改存儲庫根目錄后的下一次提交將保留當前分支的歷史記錄。

總結一下以上內容:我在C:/projects/NameOfProject/MyCode/並且我想將存儲庫根目錄移到C:/projects/NameOfProject/而不要在這兩個文件夾中都移動文件/子文件夾。

我該如何實現?

您需要使用git filter-branch在整個NameOfProject/MyCode/存儲庫中重寫目錄名稱。 我這樣推薦:

  1. 備份所有內容。
  2. 將目錄MyCode復制到一個臨時位置。
  3. (在該臨時目錄中)使用以下命令重寫目錄: git filter-branch --tree-filter 'mkdir MyCode && mv * MyCode || :' -- --all git filter-branch --tree-filter 'mkdir MyCode && mv * MyCode || :' -- --all 過濾器將重寫所有分支; 對於每個現有的提交,它將創建一個新的子目錄MyCode並將所有文件移入其中(忽略錯誤;將至少存在一個錯誤-無法將MyCode轉換為MyCode )。 這是整個過程的主要部分; 它准備使存儲庫期望MyCode子目錄中的所有文件而不是存儲庫的根目錄,但保留提交歷史記錄。
  4. 將新的.git目錄移動到C:/projects/NameOfProject/ (而不是MyCode !)並清理temp dir。
  5. 確認您有備份並刪除MyCode/.git
  6. git add OtherFiles
  7. git commit -m OtherFiles

您可以在C:/ projects / NameOfProject /下通過以下方式初始化一個新的倉庫

git初始化

並將遠程分支拉到該倉庫下,只需將MyCode和OtherFiles這兩個文件夾復制並替換到初始化的git repo中,然后將其推送到您的遠程倉庫即可。

暫無
暫無

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

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