假设快进意味着所有提交都在目标分支上重放,并且HEAD被设置为该分支上的最后一次提交,这样可以吗?
HEAD
rhfm7lfc1#
当您尝试将一个提交与一个可以通过跟踪第一个提交的历史记录来实现的提交合并时,Git通过向前移动指针来简化事情,因为没有不同的工作可以合并在一起——这称为“快进”更多信息:http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging以另一种方式,如果Master没有分歧,git将只将Master指向特性分支的最新提交,而不是创建新提交。这是一个“快进”快进合并中不会有任何“合并提交”。
balp4ylt2#
在Git中,“快进”意味着更新HEAD指针,使其新值是先前值的直接后代。换句话说,先前的值是父母、祖父母或祖父母。。。当新HEAD相对于要集成的流处于发散状态时,无法进行快速转发。例如,您在master上有本地提交,git fetch已经将新的上游提交引入origin/master。分支现在从其上游分支分支,无法快速转发:您的masterHEAD提交不是origin/master的祖先HEAD,只需将master重置为origin/master值,就会丢弃本地提交。这种情况需要重新定位或合并。如果您的本地master没有更改,则可以快速转发:只需更新以指向与最新origin/master相同的提交。通常,无需特殊步骤即可快速转发;在没有本地提交的情况下,它由merge或rebase完成。
master
git fetch
origin/master
merge
rebase
不,这称为rebasing,当没有要重播的提交时,快速转发是一种特殊情况(并且目标分支有新的提交,并且目标分支的历史没有被重写,因此目标分支上的所有提交都将当前提交作为其祖先)
exdqitrt3#
我用了“git rebase”,效果很好。
3条答案
按热度按时间rhfm7lfc1#
当您尝试将一个提交与一个可以通过跟踪第一个提交的历史记录来实现的提交合并时,Git通过向前移动指针来简化事情,因为没有不同的工作可以合并在一起——这称为“快进”
更多信息:http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
以另一种方式,
如果Master没有分歧,git将只将Master指向特性分支的最新提交,而不是创建新提交。这是一个“快进”
快进合并中不会有任何“合并提交”。
balp4ylt2#
在Git中,“快进”意味着更新
HEAD
指针,使其新值是先前值的直接后代。换句话说,先前的值是父母、祖父母或祖父母。。。当新
HEAD
相对于要集成的流处于发散状态时,无法进行快速转发。例如,您在master
上有本地提交,git fetch
已经将新的上游提交引入origin/master
。分支现在从其上游分支分支,无法快速转发:您的master
HEAD
提交不是origin/master
的祖先HEAD
,只需将master
重置为origin/master
值,就会丢弃本地提交。这种情况需要重新定位或合并。如果您的本地
master
没有更改,则可以快速转发:只需更新以指向与最新origin/master
相同的提交。通常,无需特殊步骤即可快速转发;在没有本地提交的情况下,它由merge
或rebase
完成。不,这称为rebasing,当没有要重播的提交时,快速转发是一种特殊情况(并且目标分支有新的提交,并且目标分支的历史没有被重写,因此目标分支上的所有提交都将当前提交作为其祖先)
exdqitrt3#
我用了“git rebase”,效果很好。