簡體   English   中英

如何將git倉庫的一部分遷移到另一個倉庫?

[英]How do I migrate part of a git repo into another repo?

我有兩個Git存儲庫,即A和B。存儲庫B已退休。 它的一些(但不是全部)文件需要合並到A的分支中,包括它們的提交歷史記錄,可能一次合並一個文件夾。 如果相關,該分支最終將用於A的master分支的github PR。

  1. 我該如何完成?
  2. 如果在合並之后但在B退役之前對B進行了更改,則如何使用這些更改來更新A?

有兩種情況,我知道您的情況是第二種,但是我將兩者都留在這里,這樣可能會對其他人有用。

情況1

情況1是當AB共享相同的原點(歷史)時,因此一個人可以從另一個中拉出,反之亦然。

對於問題1:

首先將回購B放入A中

然后,將B合並到A的分支中,而無需提交:

git checkout A_branch
git merge B_branch --no-commit --no-ff

B不需要的文件將顯示為A分支的新文件或新更改。 刪除/丟棄它們。

然后提交。 這樣,您最終只能得到B想要的東西。

對於問題2:

再次做同樣的事情。

情況二

情況2是AB完全不同,它們的文件夾結構也不同,也就是說,如果您只是將一個repo文件夾復制到另一個repo文件夾,則文件不會沖突(盡管這不是我們要做的) 。

如果是這種情況,可以使用git subtree 這篇博客文章可以提供更多詳細信息,但是基本上,您想做的是在回購A上

git subtree add --prefix ./destination_folder https://your_repo.com/B.git master

因此, prefix指定存儲庫B的目標文件夾,然后是B的地址,然后是其分支。

如果需要安裝git subtree ,請參考該博客文章。

這個問題的另一個解決方案是使用git-stitch-repo ,其結合了兩種回購創造了第三個,但我覺得你的情況適合用更好git subtree ,所以我就離開這個git-stitch-repo網址在這里

暫無
暫無

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

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