git fast-forward总结

fast-forward和no-fast-forward两种模式只会在merge的时候出现。

fast-forward出现的两种情况

1. git push 和 git pull 远程分支与本地分支合并

2. git merge branch 本地两个分支进行合并

fast-forward

merge之后不会出现新的commit对象,分支的合并线是一条直线,被合并的分支,没有分叉,会丢失,再看不到该分支历史。

no-fast-forward

merge之后会出现一个merge commit对象,分支的合并线在主干外出现一条分叉,叉出去,又叉回来,在merge节点处合并为主干。

git push出现reject的情况

本地的最后commit与远端的不一致,导致无法对接,reject。

对于已经push的commit,如果在本地再次修改,例如 git commit --amend或者git rebase -i修改,则push的时候会出现reject。

远程的commit在本地已经没有了,冲突了,如果没人拉取此commit,则可以git push -f,强制删除无用的commit,但没人拉取不可知。

所以,已经push的commit,只能用revert来修改commit,即新提交一条commit。

 

参考:

https://www.jianshu.com/p/86c44bef4ea1

https://blog.csdn.net/lzb348110175/article/details/93479318

posted @ 2021-11-05 19:38  全玉  阅读(6191)  评论(0编辑  收藏  举报