! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:yangchao0718/cocos2d.git
hint: Updates were rejected because the tip of your current branch is behin
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
問題說明
本質原因:因為
遠程庫與本地庫不一致造成的,那么我們把遠程庫同步到本地庫就可以了
一般問題:發生在本地庫提交到遠程庫的時候。
一般原因:當我們在github版本庫中發現一個問題后,你在github上對它進行了在線的修改;或者你直接在github上的某個庫中添加readme文件或者其他什么文件,但是沒有對本地庫進行同步。這個時候當你再次有commit想要從本 地庫提交到遠程的github庫中時就會出現push失敗的問題。
一般原因:當我們在github版本庫中發現一個問題后,你在github上對它進行了在線的修改;或者你直接在github上的某個庫中添加readme文件或者其他什么文件,但是沒有對本地庫進行同步。這個時候當你再次有commit想要從本 地庫提交到遠程的github庫中時就會出現push失敗的問題。
我的問題:本地新建一個文件夾,打開git bash,輸出git init初始化一個本地庫,然后git pull了遠程庫,修改后提交。
我的原因:遠程庫pull下來后,就是一個完整的庫了,而我當初新建了個庫,而且用這個本地庫(與puul下來的不是一個),和遠程庫同步。
我的解決方法:進入pull下來的庫的文件夾,打開git bash,並push,就可以了。
解決方案:這個問題是因為遠程庫與本地庫不一致造成的,那么我們把遠程庫同步到本地庫就可以了。
使用指令:git pull --rebase origin master
這條指令的意思是把遠程庫中的更新合並到本地庫中,-rebase的作用是取消掉本地庫中剛剛的commit,並把他們接到更新后的版本庫之中。
使用指令:git pull --rebase origin master
這條指令的意思是把遠程庫中的更新合並到本地庫中,-rebase的作用是取消掉本地庫中剛剛的commit,並把他們接到更新后的版本庫之中。
如圖:
下面我用圖形象的解釋下錯誤情況的發生和解決

git pull –rebase origin master意為先取消commit記錄,並且把它們臨時 保存為補丁(patch)(這些補丁放到”.git/rebase”目錄中),之后同步遠程庫到本地,最后合並補丁到本地庫之中。
接下來就可以把本地庫push到遠程庫當中了。
大部分摘抄網絡
