18.5.4 开发者user2合并推送

    开发者user2在本地版本库完成提交后,不要忘记向远程共享版本库进行推送。但在推送分支hello-1.x时开发者user2没有开发者user1那么幸运,因为此时远程共享版本库的hello-1.x分支已经被开发者user1推送过一次,因此开发者user2在推送过程中会遇到非快进式推送问题。


    $git push To file:///path/to/repos/hello-world.git ![rejected]hello-1.x->hello-1.x(non-fast-forward) error:failed to push some refs to 'file:///path/to/repos/hello-world.git' To prevent you from losing history,non-fast-forward updates were rejected Merge the remote changes(e.g.'git pull')before pushing again.See the 'Note about fast-forwards' section of 'git push—help' for details.

    就像在“第15章 Git协议和工作协同”一章中介绍的那样,开发者user2需要执行一个拉回操作,将远程共享服务器的改动获取到本地并和本地提交进行合并。


    $git pull remote:Counting objects:7,done. remote:Compressing objects:100%(4/4),done. remote:Total 4(delta 3),reused 0(delta 0) Unpacking objects:100%(4/4),done. From file:///path/to/repos/hello-world ebcf6d6..b56bb51 hello-1.x->origin/hello-1.x Auto-merging src/main.c Merge made by recursive. src/main.c|2+- 1 files changed,1 insertions(+),1 deletions(-)

    通过显示分支图的方式查看日志,可以看到在执行git pull操作后发生了合并。


    $git log—graph—oneline *8cffe5f Merge branch 'hello-1.x' of file:///path/to/repos/hello-world into hello-1.x |\ |*b56bb51 Fix typo:-help to—help. *|e64f3a2 Bugfix:allow spaces in username. |/ *ebcf6d6 blank commit for GnuPG-signed tag test. *8a9f3d1 blank commit for annotated tag test. *60a2f4f blank commit. *3e6070e Show version. *75346b3 Hello world initialized.

    现在开发者user2可以将合并后的本地版本库中的提交推送给远程共享版本库了。


    $git push Counting objects:14,done. Delta compression using up to 2 threads. Compressing objects:100%(8/8),done. Writing objects:100%(8/8),814 bytes,done. Total 8(delta 6),reused 0(delta 0) Unpacking objects:100%(8/8),done. To file:///path/to/repos/hello-world.git b56bb51..8cffe5f hello-1.x->hello-1.x