【问题标题】:How to move one repo to another repo folder and keep git history?如何将一个 repo 移动到另一个 repo 文件夹并保留 git 历史记录?
【发布时间】:2021-01-25 14:27:16
【问题描述】:

我想将我的项目(例如project-A)移动到 monorepo 并保留整个 git 历史记录。现在在将远程存储库添加到新存储库时使用

git remote add A <remote-repo-project-A>

并使用拉取项目

git pull project-A master --allow-unrelated-histories

源文件位于 monorepo\src 文件夹中,而不是 monorepo\apps\project-A\src 中

基本上我想将 repo-A 移动到具有以下结构的新 repo:

repo-A
---- src

new repo
---- projects
---- ---repo-A(rename to project-A)
---- ------src

【问题讨论】:

  • this 回答你的问题了吗?
  • 我不明白你的问题,你能不能再清楚一点。
  • @Steezy 我想要类似的东西我更新了问题...
  • @Michael 我很抱歉不清楚......我更新了这个问题。我想用这种结构将旧项目移动到新仓库

标签: git atlassian-sourcetree


【解决方案1】:

在 Git 中,历史只是提交。提交历史。因此,对于您没有完全提出的问题——“我可以在不更改提交内容的情况下更改提交的内容”——的字面答案当然是。更重要的是,任何人或任何事情都不能更改任何提交,因为提交是编号的,并且数字是其内容的加密校验和。因此,如果您更改有关提交的任何内容,则会更改 number

然而,一切都没有丢失。您可以将提交复制到新的和改进的提交,其与原始提交的唯一区别是......好吧,让我们以一个提交为例。原始提交说这些文件被命名为src/file1src/file2 等,它们的内容如下: ...提交是由____在____上进行的,其父级是...新的和改进的提交说文件被命名为projects/A/src/file1projects/A/src/file2等,这是它们的内容......提交是由(同一个人)在(同一日期)及其父母做出的是(原始提交的父母的新的和改进的副本)。

此复制过程繁琐但简单,可以通过git filter-branchgit filter-repogit move directory to another repository while keeping the history 中所示的各种其他工具完成(以及许多其他非常相似的问题)。请注意,如果您希望在此存储库中拥有其他提交的其他存储库(或者更确切地说,提交的新的和改进的副本),则必须决定是否转换每组提交一次一个,然后尝试组合(合并)提交以组合它们,或者编写一个更高级的过滤器,尝试一次组合所有其他存储库的提交。也就是说,一个新的和改进的提交可能代表来自其他存储库的两个或多个“原始”提交。这是一个困难得多的命题,现有的过滤程序做简单直接的事情并不适合你。

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多