【问题标题】:Merge no common commits into master branch?将不常见的提交合并到主分支中?
【发布时间】:2016-01-14 17:19:09
【问题描述】:

我有一个 Git 存储库,其中有很多提交和单独的代码,比如说

/Proj1

我还有另一个 Git 存储库,其中包含 1 个不常见的提交,

/Proj2

如何合并两个存储库并让历史记录与父提交正确显示?基本上,两个存储库之间没有任何共享提交,但我想要一个包含两组代码的存储库。我希望它看起来像:

proj2 commit
proj2 commit
proj1 commit (root)

我知道 rebase 是一个选项,但不确定使用 --onto 是否会替换根提交(如果我从远程 repo 和 rebase --onto --root master 进行提取似乎会这样做)。

我尝试使用 git 子树,最初看起来它们可以工作,但是当我使用 git-tfs 推送我的提交时,我收到一个错误提示

警告:父 ... 不属于 TFS 跟踪分支(未在 TFS 中检查),将被忽略

并且提交实际上并没有向上推(也可能因为它是一个子树)。

编辑:我只想得到 1 个 repo (Proj1),但 Proj2 的提交是在 Proj1 在主分支上提交之后进行的。

【问题讨论】:

  • 每个项目应该有一个 Git 存储库。为什么要合并它们?
  • Git + TFS?你这个可怜的可怜的灵魂。
  • 我已经编辑了我的问题。基本上有 2 组代码位于不同的存储库中(没有共同提交),我希望将第二个存储库的历史移入第一个存储库。
  • @Cupcake git-tf 更好?
  • 开个玩笑,别介意;)

标签: git tfs git-tfs


【解决方案1】:

Cupcake 帮助解决了这个问题。这是执行此操作的一种方法:

在 ProjA 中,将 Proj B 添加为远程:

git remote add projb C:\projB

执行 git fetch 以获取 projB 主分支的所有提交:

git fetch projb

从 projB 的根开始 rebase 到 projA 的 master 分支的尖端(末端):

git rebase --onto master --root projb/master

就是这样!执行此操作的风险可能较小,但这肯定暂时解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    相关资源
    最近更新 更多