什么是git快

这个问题在这里已经有了答案:

  • `git merge`和`git merge --no-ff`有什么区别? 4个答案

  • 当你试图合并一个提交和一个可以通过第一个提交的历史记录到达的提交时,Git通过向前移动指针来简化事情,因为没有任何不同的工作要合并 - 这被称为“快进”。

    更多:http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

    用另一种方式,

    如果Master没有分歧,不是创建一个新的提交,git只会将master指向功能分支的最新提交。 这是一个“快进”。在快进合并中不会有任何“合并提交”。


    在Git中,“快进”意味着更新HEAD指针,使其新值是先前值的直接后代。 换句话说,先前的价值是父母,祖父母或祖父母,......

    当新HEAD处于相对于要整合的流的分散状态时,无法进行快速转发。 例如,你在master并且有本地提交,并且git fetch已经将新的上游提交带入origin/master 。 该分支现在与其上游不同,并且不能快速转发:您的master HEAD提交不是origin/master HEAD的祖先。 简单地将master重置为origin/master的值会丢弃您的本地提交。 这种情况需要重新整合或合并。

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

    可以假设快进意味着所有提交都在目标分支上重播并且HEAD被设置为该分支上的最后一个提交?

    不,这就是所谓的rebasing,其中快速转发是一种特殊情况,当没有提交重播时(并且目标分支具有新的提交,并且目标分支的历史未被重写,所以所有提交在目标分支上有当前的分支作为他们的祖先。)

    链接地址: http://www.djcxy.com/p/45059.html

    上一篇: What is git fast

    下一篇: Git merge master into feature branch