在Git中保存历史记录的同时,将文件夹从一个仓库复制/移动到另一个仓库



我的笔记本电脑中有一个新的git repoRepoA和一个概念验证项目,该项目没有存储在其他地方,还有一个我从Azure DevOps签出的repoRepoB。我只想将RepoA中的整个项目复制到RepoB中的文件夹中,同时保留RepoA中项目的历史记录。因此,RepoB的历史将显示RepoA的所有历史条目以及RepoB的历史。这可能吗?

我如何在几个步骤中做到这一点(与许多SO答案中长达一英里的gitcli命令列表相反(。我不想过滤RepoA中的任何内容,只需将根文件夹复制到RepoB中,并保持所有历史记录不变。

在Git存储库中,历史无非是Git存储中的提交

任何承诺都不能更改。但是,您可以丢弃一些旧的提交集,而选择一些新的改进的提交集。您可以在任何时候添加新的提交,无论是一次添加一个提交,还是使用git merge将一些旧的提交链与其他旧的提交链路组合。后者之所以有效,是因为git log通过向后工作来查找提交,一次一个提交,从最近的提交到较旧的提交;在达到合并提交时,git log跟随两个链,除非指示只跟随一个链

git log如何遵循两条链,或者只遵循一条链,以及你指示它执行其中一条或另一条链的方式,可能会变得非常复杂。这可能会影响您选择如何添加提交。

不过,除此之外,您可以使用廉价而肮脏的合并(如果需要,可以使用--allow-unrelated-histories(将两个存储库的提交拆分为一个混乱的批量,也可以使用其他SO答案。

最新更新