git:在 git 中使用未跟踪的基数进行 rebase

标签 git

我正在改进一些遗留代码,我使用 git 来处理版本。而且我发现了 SAME 遗留代码的另一个分支,所以我想将它 merge 到我的代码中。问题是: 这两个版本的初始提交是不同的,所以我不能简单地在 git 中 rebase 。

NOW:
(origin) -- (untracked modifications) -- my tracked improvements 
         \- (other untracked modifications) --some other tracked improvements 
NEEDED:
(origin) -- some other tracked improvements -- my tracked improvements

如图所示,这两个分支位于 2 个单独的存储库中。

我想我需要的可能只是将所有更改导入另一个新存储库,但我不知道如何导入。

最佳答案

如果您有 2 个非常相似的存储库,您可以使用嫁接点来使一个存储库的提交成为另一个存储库的父级,从而允许您在此之后 rebase 。
您有一个带有“How to merge two branches without a common ancestor?”的示例,但是您需要一个git filter-branch 来使本地 修改(移植点)永久化。

另一个更经典的解决方案是使用 subtree merging (也出现在 Pro Git book 中)。

博文“Having Fun with Git Subtree”为您提供了两个存储库之间的此类 merge 示例。

关于git:在 git 中使用未跟踪的基数进行 rebase ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801886/

相关文章:

xcode - 如何在 Mac OS X 10.9 上安装和使用最新的 Git?

android - 为 Android 构建启动器

git - 权限被拒绝错误 - jenkins(shell 脚本)

Git 错误 : conq: repository does not exist

git - 错误 : RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

Git 部分 fork ,同步 pull/merge

git 直接推送到 URL 而不需要远程?

git - "* text=auto"和 "* text=auto eol=lf"有什么区别?

git - 如何使非程序员更容易使用 Git 子模块?

python - sphinx-apidoc 获取子模块,但 autodoc 没有记录它们