我解释了这个问题
这是我的实际git
我的合并有问题,在与蓝色分支合并的过程中,将忽略在红色分支中还原的文件。
基本上,我们开始在红色分支上开发功能,然后决定更改分支,为使红色分支“纯净”而没有错误,我们还原了该功能的初始更改。
根据我们已经在红色分支上所做的工作,我们继续在蓝色分支上使用该功能。
文件重命名/删除和更改很多。
现在,当我合并蓝色和红色时,一半的更改不会保留,甚至不会发生冲突。
我用我们想要的恰好做了另一个分支(我们称它为紫色),我想知道有一种方法可以将紫色分支推入红色分支,以准确保留紫色中的内容分支
答案 0 :(得分:1)
修复red
分支(历史不会更改):一种方法是还原revert-commit-1
和revert-commit-2
,然后将blue
分支合并到red
分支。
$ git checkout red # checkout to 'red' branch
$ git log # copy the 'revert-commit-2' & 'revert-commit-1' commit hash
$ git revert <revert-commit-2-hash>
$ git revert <revert-commit-1-hash>
$ git pull origin blue # merge the blue branch changes
另一种方式:用red
分支替换当前的purple
分支(red
分支历史将被更改)
# first backup the 'red' branch for just safety
$ git checkout red
$ git branch red.bac
# replace red branch with purple branch
$ git checkout purple
$ git branch -D red # delete 'red' branch
$ git checkout -b red # create & checkout to new local 'red' branch with 'purple' branch history
# now if you pushed the 'red' branch already then you need to do force (-f) push otherwise do normal push
$ git push -f origin red