2

以下是一个假设场景,旨在更好地了解变基的危险

用户 A 进行了 2 次提交。他首先使用单词“Hello”将文本文件添加(暂存)到根目录,提交它,然后使用单词“world”将另一个文件添加到同一根目录,然后提交该文件。因此,他的最终提交对应于具有 2 个文件的根目录。一个只有一个单词“Hello”,另一个只有一个单词“World”

用户 B 做了同样的事情,并在他的 git root 项目中得到了相同的 2 个文件,只是他以相反的顺序做:他首先添加带有单词“world”的文件,提交它,然后添加文件“你好”这个词并提交它。

最后,假设用户 A 将他的项目推送到远程存储库,然后用户 B 创建了一个跟踪分支并获取了用户 A 推送的项目作为分支。鉴于这种情况,我的问题——实际上试图模拟变基并磨练我对变基的危险的理解——是用户 B 是否需要与与用户 A 推送到远程的任何关联的分支合并存储库?

根据我阅读和理解的内容,用户 A 和用户 B 的最终提交的 sha 哈希将不同,因此需要合并,假设他们都希望在知道他们是同步的情况下继续他们的“开发”工作。我对么 ?

4

1 回答 1

3

您是对的,SHA-1 记录了路径(或多或少的整个祖先链),git 根据提交节点(带有原始 SHA-1 的 DAG)确定必须合并哪些提交。

如果他们真的合并了(或者一个人将他的东西重新建立在另一个人的基础上,同时抛出任何“不需要的”提交),那么合并将变得很容易,因为取决于文件内容 - 或者更具体地说,来自合并的差异-base 到每个提示提交。任何产生的合并提交(只要它被两个用户拾取)都会使他们的图表同步,因为新提交会将新的合并提交作为其父 ID。

于 2015-02-13T04:11:12.453 回答