将父级master分支到git中的forked分支

时间:2018-01-17 06:10:28

标签: git github merge rebase branching-and-merging

我有一个带有master分支的原始/父git repo,例如https://github.ironman.com/ironman/jarvis.git

现在我的团队中的某个人已经分配了这个仓库,现在仓库是https://github.ironman.com/steve/jarvis.git,他在那里对仓库进行了很多更改/提交

现在我已经分配了我的朋友史蒂夫的上述回购,现在回购是https://github.ironman.com/tony/jarvis.git,这里我添加了大量提交的附加功能

同时,父回购ironman(https://github.ironman.com/ironman/jarvis.git)有很多分支从其他团队合并到其中,所以现在我的实际需要是将这个父回购合并到我的回购tony(https://github.ironman.com/tony/jarvis.git)中提交类似rebase

的内容

我已经从我的repo(tony)主分支尝试了一些方法,如下所示

git add remote upstream `https://github.ironman.com/ironman/jarvis.git`
git checkout master
git merge upstream/master

但是通过上述步骤,所有主分支提交历史记录(将近400次提交)都会在我当前的主分支上更新,我不想要,因为我将失去对当前主分支提交历史记录的跟踪然后我尝试使用rebase

git checkout master
git rebase -i upstream/master

这里我的分支和父主分支之间有近200个提交历史记录差异,因此使用上面的rebase命令,它会询问/显示主分支上每个提交的合并冲突。因此我需要为近100次提交单独修复它们并运行git rebase - 继续100次这是非常繁琐的工作

所以最后我的问题是如何将我的分支(ironman repo)上的父主(tony master branch)分支与单个提交合并?

情境:

                     ironman
                        |
                      steve(forked from ironman)
                        |
                       tony(forked from steve)

我想将ironman master分支合并到tony master分支,并在其上单个提交

1 个答案:

答案 0 :(得分:1)

如果你不想在冗长的rebase中经历如此多的提交重放,那么显而易见的替代方案就是只进行合并:

git checkout master
git merge upstream/master

这将导致单个(合并)提交现在位于localmaster之上,对应于自两个主分支发生以来发生的所有更改。

如果你真的需要去rebase路线,那么我认为没有任何避免这些冲突,因为提交被逐一重播。