如何将 myRepo1 git 中 dir1 的内容移动到另一个 myRepo2 中的另一个目录,即将 myRepo1/dir1 的内容移动到 myRepo2/dir2

问题描述 投票:0回答:1

我想要实现

repo-1

---- 目录1

--- dir1 的内容

repo-2

---- 目录2

--- repo-1 中 dir1 的内容

我们有许多参考可用于将目录内容模式设置为新存储库,但不能将其设置为新存储库的子目录。 我需要将 myRepo1 git 中 dir1 的内容移动到另一个 myRepo2 中的另一个目录,即通过保留提交历史记录将 myRepo1/dir1 的内容移动到 myRepo2/dir2 。 带有 --prefix 的 git read-tree 正在完成这项工作,但不保留历史记录。 git pull 我只能在存在 .git 文件的父文件夹上执行操作。

git github
1个回答
0
投票

试试这个;

myRepo1
克隆到本地计算机(如果尚未这样做)。 将
myRepo2
克隆到您的本地计算机。

导航至

myRepo1
cd myRepo1
.. 将
dir1
及其内容添加到暂存区:
git add dir1/*
.. 使用描述性消息提交更改:
git commit -m "Move dir1 content to myRepo2"
。 导航至
myRepo2
cd ../myRepo2
。 使用
git subtree merge
dir1
的内容添加到
dir2
git subtree merge --prefix=dir2 ../myRepo1/dir1 master

它是如何工作的;

git subtree merge
是一个功能强大的命令,可让您将另一个 Git 存储库中的子目录集成到当前存储库中。

--prefix=dir2
告诉
git subtree merge
dir1
的内容添加到
dir2
中名为
myRepo2
的目录下。

../myRepo1/dir1
指定源子目录(当前位置的相对路径)。

master
指定
myRepo1
中您要集成的分支(如果需要,请替换为所需的分支)。

最后,将更改推送到

myRepo2
:git push origin master。此方法将保留
dir1
myRepo2
的提交历史记录。

注: 在执行这些步骤之前,请确保您已在两个存储库中进行了任何必要的拉取或提取。 如果

dir2
已存在于
myRepo2
中,则其内容将被
dir1
覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.