什么是git快进?

什么是git快进?,git,Git,这听起来可能是个愚蠢的问题,但我找不到简单的答案 假设快进意味着所有提交都在目标分支上重放,并且头设置为该分支上的最后一次提交,可以吗?当您尝试将一次提交与通过遵循第一次提交的历史记录可以实现的提交合并时,Git通过向前移动指针来简化事情,因为没有不同的工作可以合并在一起——这被称为“快进” 更多信息: 换句话说 若Master并没有发散,git将创建一个新的提交,而不是创建一个新的提交 只需将master指向功能分支的最新提交。这是一个“快进” 快进合并中不会有任何“合并提交”。在Git中,“

这听起来可能是个愚蠢的问题,但我找不到简单的答案


假设快进意味着所有提交都在目标分支上重放,并且
头设置为该分支上的最后一次提交,可以吗?

当您尝试将一次提交与通过遵循第一次提交的历史记录可以实现的提交合并时,Git通过向前移动指针来简化事情,因为没有不同的工作可以合并在一起——这被称为“快进”

更多信息:

换句话说

若Master并没有发散,git将创建一个新的提交,而不是创建一个新的提交 只需将master指向功能分支的最新提交。这是一个“快进”

快进合并中不会有任何“合并提交”。

在Git中,“快进”意味着更新
指针,使其新值是先前值的直接后代。换言之,先前的值是父母、祖父母或外祖父母

当新的
相对于要集成的流处于发散状态时,无法进行快进。例如,您在
master
上进行本地提交,
git fetch
将新的上游提交带到
origin/master
。分支现在从其上游发散,无法快速转发:您的
主节点
头节点
提交不是
源节点/主节点
头节点
的祖先节点。简单地将
master
重置为
origin/master
的值将放弃本地提交。这种情况需要重新设置基础或合并

如果本地
master
没有更改,那么它可以快速转发:只需更新为指向与最新
origin/master
相同的提交。通常,快速转发不需要特殊步骤;在没有本地提交的情况下,通过
merge
rebase
完成

假设快进意味着所有提交都在目标分支上重放,并且头部设置为该分支上的最后一次提交,可以吗


不,这称为重定基,当没有要重放的提交时,快进是一种特殊情况(并且目标分支有新的提交,并且目标分支的历史记录没有被重写,因此目标分支上的所有提交都将当前提交作为其祖先)

看哪一个例子和图表解释了这一点?它的意思是“让本地头成为远程头”@Victor我也会这样解释它。这意味着您只能在本地主机与远程主机是最新的情况下提交。