【问题标题】:Preserving history of GIT commits while moving a GIT repository在移动 GIT 存储库时保留 GIT 提交的历史记录
【发布时间】:2015-04-17 21:00:54
【问题描述】:

我有两个 GIT 项目 A 和 B(空项目)。我想将整个项目 A 移动到项目 B 中,并在将所有文件从 A 移动到 B 时保留提交的历史记录。

使用 GIT 执行此操作的有效方法是什么?我尝试使用 git filter-branch 但似乎我没有以正确的方式这样做,因为它给了我“致命的...... xyz / is outside repository”。有人可以指点一下吗?

谢谢!

【问题讨论】:

  • 如果项目 B 是您刚刚使用 git init 初始化的空项目,请将其定义为项目 B 中的新 remote 并执行 git push -u remoteb master
  • 感谢您的建议。我相信,您的意思是来自项目 A 的新“远程”?这种方式是否保留了 git 提交历史记录?
  • 如果你进入你的项目A仓库,添加一个新的remote指向项目B,然后执行上面的push命令,你的整个历史都会被保留。
  • Filter 分支如果你想preserve 肯定不是正确的工具,它更像是一个重写大部分历史的工具。我认为 Joël 想说“A:git remote add remoteb ”,然后是“A:git push -u remoteb master”(或您要推送的任何分支)。
  • 我知道这种方法,但没有尝试实际验证它是否保留了提交历史。谢谢大家的建议。我会试一试。

标签: git history git-commit


【解决方案1】:

这是我们问题的 cmets 中描述的完整工作流程。

我假设您想将分支 master 的整个历史记录从 Project A 推送到 Project B

  1. Project B 文件夹 > 初始化 git repo:

    git init

  2. 项目 A 文件夹 > 将项目 B 存储库添加为新远程:

    git remote add remoteb <urlToB>

  3. Project A 文件夹 > 签出相应的分支(如果需要):

    git checkout master

  4. 项目A文件夹 > 将分支master的整个历史推送到remoteb

    git push -u remoteb master

如果你想了解更多关于git push命令和参数的信息,你可以在这里找到官方文档:git push Documentation

【讨论】:

  • 第 1 步应该是 git init --bare 否则你可能会遇到类似 remote: error: refusing to update checked out branch: refs/heads/master 的错误
猜你喜欢
  • 2018-06-01
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 2015-10-19
  • 2015-06-04
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
相关资源
最近更新 更多