簡體   English   中英

如何從另一個 Git 存儲庫中僅提取一個文件夾?

[英]How do I pull just one folder from another Git repository?

我正在從一些現有的存儲庫創建一個 monorepo,並且我想保留提交歷史記錄。

這里的答案告訴我們git subtree命令對此很有用,如果我們想將舊的 git 存儲庫按原樣導入新結構,它可以正常工作。

但是,我有一個我很重要的項目,如下所示:

/
  server/
    index.js
    package.json
  src/
  package.json 

在這里,我只想導入server文件夾,並在上面保留提交歷史記錄。

我可以只導入整個文件夾,刪除我不需要的所有內容,然后將server中的所有內容上移一個文件夾,但我擔心會破壞提交歷史記錄。

有沒有辦法只導入一個子目錄?

正如 Serge 在評論中所建議的那樣 - git filter-branch可以用來實現這一點。

這是我做的方式,也許有更簡單的方法。

  1. 創建一個臨時遠程倉庫“temp”。

  2. 在現有的回購中:

git filter-branch --subdirectory-filter server -- --all 
git remote add temp git@temporaryrepo....
git push temp master

這將創建一個以server目錄中的所有內容為根的存儲庫。

  1. 在你的新倉庫中
git subtree add -P packages/server /path/to/temp.git master

這會將臨時根目錄導入packages/server

暫無
暫無

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

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