以下是一个假设情景,旨在更好地了解变基的危险
用户A进行2次提交。他首先将一个文本文件添加(阶段)到根目录,单词“Hello”,提交它,然后将另一个文件添加到同一个根目录,单词“world”,然后提交该文件。因此,他的最终提交对应于具有2个文件的根目录。一个单词“Hello”,另一个单词“World”
用户B执行相同的操作并最终在他的git根项目中使用相同的2个文件,只有他反向排序:他首先添加文件“world”,提交它,然后添加带有“hello”字样的文件并提交它。
最后,我们假设用户A将他的项目推送到远程存储库,然后用户B创建了一个跟踪分支并获取用户A作为分支推送的项目。鉴于这种情况,我的问题 - 真正尝试模拟变基并磨练我对基于该问题的变基的危险的理解 - 是用户B是否需要与任何用户A推送到远程的相关联的分支合并存储库?
根据我阅读和理解的内容,用户A和用户B的sha哈希注意到他们的最终提交将是不同的,因此需要合并,假设他们都希望继续他们的“开发”工作,知道他们是同步的。我是对的吗?
答案 0 :(得分:3)
你是对的,SHA-1记录路径(整个祖先链或多或少),git根据提交节点确定必须包含哪些提交(DAG及其原始SHA-1)
如果他们实际合并(或者一个人在另一个人身上贬低他们的东西,同时抛弃任何“不需要的”提交),那么合并将变得很容易,因为 取决于文件内容 - 或者更具体地说,从merge-base到每个tip提交的diff。任何产生的合并提交(只要它被两个用户选中)都会使它们的图形同步,因为新的提交会将新的合并提交作为其父ID。