将Git存储库中的一个目录移动到另一个Git存储库,保留部分提交历史记录。

4
我从一个现有的 git 仓库 (originalrepo) forked 到了自己的 github 上,我们称之为 myrepo。
我在一个特定目录(mydir)中编辑了两到三个文件。 然而,mydir 不是直接位于 myrepo 中,而是类似于 myrepo/dirA/dirB/mydir。
现在我的团队已经建立了一个名为 grouprepo 的独立 git 仓库,我想将自己工作过的文件移动到这个新仓库中。
我想要直接将其移动到 grouprepo/mydir,并保留提交历史,但只包括我自己的提交(不包括 originalrepo 中的数千个提交),并且仅移动我所更改的文件。
这种操作是否可行?如果可以,应该如何操作?
1个回答

0

你可以非常简单地做到这一点:

  • 在新项目中添加第二个源,指向“旧”项目
  • 挑选你需要的相关提交

    # 添加对旧项目的引用,其中包含您的提交
    git remote add origin2 <url>
    
    # 从所有存储库获取所有数据
    git fetch --all --prune
    
    # 现在检出您想要将先前提交添加到的分支
    git checkout <branch>
    
    # “挑选”您想要的所需提交
    git cherry-pick commit1 commit2 ... commit
    

现在你已经准备好了,你的提交(仅限它们)都在你当前的分支中。


cherry-pick

挑选哪些提交(从任何分支或甚至是松散的提交)将此提交拾取并放置在当前分支中,换句话说-从存储库的任何位置获取任何提交并将其带到我的分支


获取所有远程内容

enter image description here

cherry-pick将所需的提交合并到当前分支中
(在我的情况下存在冲突,但这没有关系。)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接