我们刚刚从Subversion切换到Git。
今天早上出现的问题是,我们从分支中挑选了一个提交到master,所以master会有一个错误修复。然后我们将master合并回分支。
当我们尝试编译时,所有从精心挑选的提交中添加的内容都会在代码中出现两次。
精心挑选的提交由几行代码的添加组成,这些代码最终会在代码中出现两次。幸运的是,它们都是完整的函数,所以会抛出编译错误。
没有冲突。
我们如何避免这种情况。这是个大问题。
谢谢。
从Git的角度来看,一个樱桃选择是一个不同的提交。也就是说,当你合并回来时,你是在原来应用的之上合并一个新提交。
也就是说,您创建了一个哈希值为ABC
的提交。你挑选它,创建一个新的提交DEF
。然后合并后将DEF
与ABC
一起应用。
在上面,我可能希望你只是在master(比如说)上执行提交,然后择优选择到你的分支。
这个博客有更多的信息。
注意,它在主分支上创建了一个新的提交。如果Master,你运行"git log",你会看到一个不同的哈希值提交消息。为什么?
这是因为Git是如何对提交进行建模的。提交是一个整个存储库的完整快照,以及给定的散列Commit反映了整个目录中每个文件的状态——是的所有哈希值的哈希值
很明显,因为主分支没有所有的提交特性分支,在bug修复时的完整快照的完整快照将生成不同的哈希值应用错误修复时的特性分支。因此,不同的哈希表。
但是当你把特性分支合并到master时,就不会了物质;进行错误修复的单个文件的哈希值会是一样的,因为它们的内容是一样的,所以呢在主文件上没有什么要更新的
这篇博文详细介绍了一个类似的情况,以及如何使用git rebase
来避免这样的问题。