这是 git-merge-base 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
git-merge-base - 为合并找到尽可能好的共同祖先
概要
混帐 合并基础 [-a|--全部] ...
混帐 合并基础 [-a|--all] --octopus ...
混帐 合并基础 --is-祖先
混帐 合并基础 - 独立的...
混帐 合并基础 --叉点[ ]
商品描述
混帐 合并基础 找到两个提交之间的最佳公共祖先,以三路使用
合并。 一个共同的祖先是 更好 比另一个共同祖先,如果后者是
前者的祖先。 没有更好的共同祖先的共同祖先是
a 世界上最好的 常见 祖先,即 合并 基地. 请注意,可以有多个合并基础
对于一对提交。
项目运营 模式
作为最常见的特殊情况,在命令行上只指定两次提交意味着
计算给定两个提交之间的合并基础。
更一般地,在计算合并基数的两个提交中,一个由
命令行上的第一个提交参数; 另一个提交是(可能
假设)提交,它是命令行上所有剩余提交的合并。
结果, 合并 基地 不一定包含在每个提交中
如果指定了两个以上的提交,则为参数。 这不同于 git-显示-
科(1) 与 --merge-base 选项一起使用时。
- 章鱼
计算所有提供的提交的最佳公共祖先,为 n-way 做准备
合并。 这模仿了 混帐 显示分支 --合并基础.
- 独立的
打印提供的提交的最小子集,而不是打印合并基础
同一个祖先。 换句话说,在给定的提交中,列出那些不能
可以从任何其他人到达。 这模仿了 混帐 显示分支 - 独立的.
--is-祖先
检查是否第一个是第二个的祖先, 并退出
如果为真,则状态为 0,否则为状态 1。 错误由非零状态表示
那不是 1。
--叉点
找到分支(或任何导致) 分叉自
另一个分支(或任何参考) . 这不仅仅是寻找共同点
两次提交的祖先,但也考虑了 reflog 看看
导致的历史从分支的早期化身分叉
(请参阅下面关于此模式的讨论)。
配置
-a,--全部
输出提交的所有合并基础,而不仅仅是一个。
讨论
给定两次提交 A 和 B, git merge-base AB 将输出可从以下位置访问的提交
都 A 和 B 通过父系关系。
例如,使用此拓扑:
哦——哦——哦——B
/
---o---1---o---o---o---A
之间的合并基础 A 和 B is 1.
给定三个提交 A, B 和 C, git merge-base ABC 将计算两者之间的合并基数 A
和一个假设的提交 M,这是之间的合并 B 和 C. 例如,有了这个
拓扑:
o---o---o---o---C
/
/o---o---o---B
//
---2---1---o---o---o---A
git merge-base ABC 的结果是 1. 这是因为等效拓扑具有
合并提交 M 之间 B 和 C 是:
噢——噢——噢——噢——噢
/ \
/o---o---o---o---M
//
---2---1---o---o---o---A
和 git merge-base AM 的结果是 1. 犯罪 2 也是共同的祖先 A
和 M,但 1 是更好的共同祖先,因为 2 是一个祖先 1。 因此, 2 是不是一个
合并基地。
git merge-base --octopus ABC 的结果是 2因为 2 是最好的共同祖先
所有提交中。
当历史涉及交叉合并时,可能不止一个 世界上最好的 常见
两次提交的祖先。 例如,使用此拓扑:
---1---o---A
\ /
X
/ \
---2---o---o---B
都 1 和 2 是 A 和 B 的合并基础。没有一个比另一个更好(两者都是
世界上最好的 合并碱基)。 如果没有给出 --all 选项,则未指定哪个是最好的
输出。
检查两个提交 A 和 B 之间的“快进性”的常见习语是(或至少
曾经是)计算A和B之间的合并基,并检查它是否与A相同,
在这种情况下,A 是 B 的祖先。您会看到这个习语经常在旧脚本中使用。
A=$(git rev-parse --验证 A)
如果测试 "$A" = "$(git merge-base AB)"
然后
... A 是 B 的祖先 ...
fi
在现代 git 中,你可以用更直接的方式表达:
如果 git merge-base --is-ancestor AB
然后
... A 是 B 的祖先 ...
fi
代替。
讨论 ON 叉点 MODE
在使用 git checkout -b topic origin/master 创建的主题分支上工作后,
远程跟踪分支 origin/master 的历史可能已经被倒带和重建,导致
到这种形状的历史:
o---B1
/
---o---o---B2--o---o---o---B(原点/主)
\
B3
\
派生(主题)
origin/master 曾经指向提交 B3、B2、B1,现在它指向 B,而你的
当 origin/master 处于 B3 时,主题分支在它的顶部启动。 该模式使用
origin/master 的 reflog 找到 B3 作为 fork 点,以便话题可以 rebase
在更新的原点/主站之上:
$ fork_point=$(git merge-base --fork-point origin/master topic)
$ git rebase --onto origin/master $fork_point 主题
使用 onworks.net 服务在线使用 git-merge-base