我有一个带有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分支,并在其上单个提交
答案 0 :(得分:1)
如果你不想在冗长的rebase中经历如此多的提交重放,那么显而易见的替代方案就是只进行合并:
git checkout master
git merge upstream/master
这将导致单个(合并)提交现在位于local
版master
之上,对应于自两个主分支发生以来发生的所有更改。
如果你真的需要去rebase路线,那么我认为没有任何避免这些冲突,因为提交被逐一重播。