git push的工作原理是这样的,如果要push的分支是追踪分支的后代,并且远程追踪分支没有更新,则可以将本地分支快进,并且推送到远程追踪分支,但是如果远程追踪分支已经有他人更新过了,则需要先把他人的提×××并(做git pull)才能git push。
如果你不想合并他人的提交,又想将个人提交推送,则使用-f参数,git push也能推送成功。但是,当你从远程仓库再次下载这个仓库时,他人的提交无法显示,难道git push -f把他人的提交删除了吗?
事实上,git push并没有删除提交的功能,他只是使得他人的提交没有了明显的引用,没有被分支引用了,所以无法快速找到他人的更新。这时你可以使用git grep查到作者是某人的提交。也许能找到其中的修改。
转载于:https://blog.51cto.com/liubincm/530549