Copy/Move 从一个存储库到另一个存储库的文件夹,同时在 Git 中保留历史记录
Copy/Move a folder from one repo to another repo while preserving history in Git
我有一个新的 git 存储库 RepoA
在我的笔记本电脑中有一个概念验证项目,它没有存储在其他任何地方,另一个存储库 RepoB
我从 Azure DevOps 签出.我只想将 RepoA
中的整个项目复制到 RepoB
中的文件夹中,同时保留 RepoA
中的项目历史记录。因此 RepoB
的历史将显示 RepoA
的所有历史条目以及 RepoB
的历史。这可能吗?
我如何通过几个步骤完成此操作(与许多 SO 答案中一英里长的 git cli 命令列表相反)。我不想过滤 RepoA
中的任何内容,只需将根文件夹复制到 RepoB
中,并保留所有历史记录。
历史,在 Git 存储库中,无非就是 Git 存储库中的 提交 。
任何提交都不能更改。但是,您可以放弃一些旧的提交集,以支持一些新的和改进的提交集。您可以在任何时候添加 new 提交,通过逐字逐句地添加提交,一次一个,或者使用 git merge
将一些旧的提交链与一些旧的提交链结合起来其他旧的提交链。后者之所以有效,是因为 git log
通过向后工作找到 提交,一次一个提交,从最近的提交到较早的提交;到达合并提交后,git log
遵循 两条链 除非指示仅遵循 一条链 .
如何 git log
跟踪两条链或仅跟踪一条链,以及您指示它执行其中一项的方式可能会变得非常复杂。这可能会影响您选择添加提交的方式。
除此之外,您要么使用廉价且肮脏的合并(如果需要,使用 --allow-unrelated-histories
)将两个存储库的提交打成一个混乱的质量,或者您使用其他 SO 答案。
我有一个新的 git 存储库 RepoA
在我的笔记本电脑中有一个概念验证项目,它没有存储在其他任何地方,另一个存储库 RepoB
我从 Azure DevOps 签出.我只想将 RepoA
中的整个项目复制到 RepoB
中的文件夹中,同时保留 RepoA
中的项目历史记录。因此 RepoB
的历史将显示 RepoA
的所有历史条目以及 RepoB
的历史。这可能吗?
我如何通过几个步骤完成此操作(与许多 SO 答案中一英里长的 git cli 命令列表相反)。我不想过滤 RepoA
中的任何内容,只需将根文件夹复制到 RepoB
中,并保留所有历史记录。
历史,在 Git 存储库中,无非就是 Git 存储库中的 提交 。
任何提交都不能更改。但是,您可以放弃一些旧的提交集,以支持一些新的和改进的提交集。您可以在任何时候添加 new 提交,通过逐字逐句地添加提交,一次一个,或者使用 git merge
将一些旧的提交链与一些旧的提交链结合起来其他旧的提交链。后者之所以有效,是因为 git log
通过向后工作找到 提交,一次一个提交,从最近的提交到较早的提交;到达合并提交后,git log
遵循 两条链 除非指示仅遵循 一条链 .
如何 git log
跟踪两条链或仅跟踪一条链,以及您指示它执行其中一项的方式可能会变得非常复杂。这可能会影响您选择添加提交的方式。
除此之外,您要么使用廉价且肮脏的合并(如果需要,使用 --allow-unrelated-histories
)将两个存储库的提交打成一个混乱的质量,或者您使用其他 SO 答案。