我已经尝试了整整一天的时间,在功能和开发之间进行简单的合并。
基本上,我想要的是能够手动将所有功能冲突合并到开发中,以便我可以在不破坏开发的情况下获得新功能。
到目前为止,这是我尝试过的事情
git checkout develop; git merge feature
git checkout feature; git merge -s ours develop
git checkout feature; git merge -s recursive -X ours develop
git checkout develop; git merge -s recursive -X theirs feature
git checkout develop; git merge -s recursive -X theirs feature
git checkout feature; git merge -s resolve develop
在所有这些情况下,任何一个分支几乎都会完全覆盖另一个分支。我没有机会手动合并文件内部的冲突。
git checkout feature; git rebase develop
对于某些文件,调用了mergetool,但是无法识别一个文件中的差异。应该注意的是,该文件之前已经合并到了develop文件中。在development中删除的文件仍然存在于功能中,但具有“ orig”扩展名。这是我到目前为止同步两个分支的最接近的方法,但是代价是无法再轻易地分离该功能的分支。
git checkout develop; git rebase feature
提供了一堆删除或保留文件的选项,然后导致错误: file not found Continue merging other unresolved paths (y/n) ? y
我还没有尝试采摘樱桃树或孤树。也许解决方案在那里?
是否有可能我删除了一些文件并重新创建了它们,这就是为什么git甚至没有尝试合并分支的原因?
每次添加新功能时都需要进行手动合并吗?似乎很难做Git-如何在选定文件上强制合并冲突和手动合并
我知道我在某个地方搞砸了,但是我无法弄清楚我在哪里或做错了什么。我可以手动编辑所有未更改的文件,但这会破坏使用git的目的。
我哪里做错了?如何解决这种情况(无需手动编辑文件)?下次我该怎么做?
PS对于git的新手来说,在学习如何使用合并和变基git reflog feature-name
等转换功能时遇到类似的麻烦git reset --hard feature-name@{n}
是无价的命令。(始终使用--hard时要格外小心,因为它会丢弃本地更改)
编辑:虽然我仍然不知道为什么会这样,但VonC提供了一个很好的权宜之计。
对于任何想知道从本地分支结帐到新本地文件夹的方式的人,请查看以下文章:https : //stackoverflow.com/a/16493707/6419701
我进行合并的方式是使用以下语法使用出色的ubuntu融合工具:meld folder1 folder2
在您目前的情况下,我会:
feature
磁盘上新路径中的checkout分支,develop
和feature
)(即,不进行git合并,仅进行一些老式文件夹比较/合并),然后清理.orig
文件,feature
的过程git merge --ours develop
。然后,仅出于测试目的,我将对两个分支中的同一文件进行并发修改,以查看agit merge develop
是否有效并带来传统的冲突解决步骤git merge
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句