【问题标题】:Copy/Move a folder from one repo to another repo while preserving history in Git将文件夹从一个存储库复制/移动到另一个存储库,同时在 Git 中保留历史记录
【发布时间】:2021-05-14 20:27:02
【问题描述】:

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

我怎样才能在几个步骤中做到这一点(而不是许多 SO 答案中一英里长的 git cli 命令列表)。我不想过滤RepoA 中的任何内容,只需将根文件夹复制到RepoB 中即可。

【问题讨论】:

标签: git copy repo


【解决方案1】:

历史,在 Git 存储库中,只不过是 Git 存储库中的 commits

任何提交都不能更改。但是,您可以丢弃一些旧的提交集以支持一些新的和改进的提交集。您可以随时添加 new 提交,或者通过字面意义上一次添加一个提交,或者使用 git merge 将一些旧的提交链与其他一些旧的提交链结合起来.后者之所以有效,是因为git log finds 通过向后工作来进行提交,一次一个提交,从最近的提交到较旧的提交;到达合并提交后,git log 会跟随两条链,除非指示只跟随一条链

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

不过,除此之外,您要么使用廉价和肮脏的合并(如果需要,使用 --allow-unrelated-histories)将两个存储库的提交打成一个凌乱的质量,或者使用其他 SO 答案。

【讨论】:

  • 感谢您的解释。我最终只是做了好的旧复制/粘贴,然后就结束了。我遇到了很多问题,不幸的是没有时间。当我有时间的时候,我可能会通过一些建议的 SO 答案。另外,如果我丢失了 POC 项目中的提交历史记录,它就不那么重要了。我习惯了 git 的 Visual Studio 和 TortoiseGit GUI 工具,但有时我发现自己处于 git cli 的黑暗面。
猜你喜欢
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 2012-05-18
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
相关资源
最近更新 更多