問題說明
當我們在github版本庫中發現一個問題后,你在github上對它進行了在線的修改;或者你直接在github上的某個庫中添加readme文件或者其他什么文件,但是沒有對本地庫進行同步。這個時候當你再次有commit想要從本地庫提交到遠程的github庫中時就會出現push失敗的問題。
我在github庫中對某個文件進行了在線的編輯,並且沒有同步到本地庫,之后我在本地庫添加了文件test.txt,並想提交到github,出現以下錯誤:error:failed to push some refs to。
解決方案
這個問題是因為遠程庫與本地庫不一致造成的,那么我們把遠程庫同步到本地庫就可以了。
使用指令
注意:此處我使用的是master分支,請根據自己的開發分支更換分支。
git pull --rebase origin master
這條指令的意思是把遠程庫中的更新合並到本地庫中,–rebase的作用是取消掉本地庫中剛剛的commit,並把他們接到更新后的版本庫之中。
如圖:
下面我用圖形象的解釋下錯誤情況的發生和解決
git pull --rebase origin master意為先取消commit記錄,並且把它們臨時 保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),之后同步遠程庫到本地,最后合並補丁到本地庫之中。
接下來就可以把本地庫push到遠程庫當中了。
如果在執行下列命令繼續報錯:
git pull --rebase origin master
錯誤:The following untracked working tree files would be overwritten by merge
錯誤原因:些沒有提交到暫存區的文件將被遠程的倉庫覆蓋,請移動或移除這些文件。
git clean -d -fx
git clean -d -fx表示:刪除 一些沒有 git add 的 文件;
git clean 參數
-n 顯示將要刪除的文件和目錄;
-x -----刪除忽略文件已經對git來說不識別的文件
-d -----刪除未被添加到git的路徑中的文件
-f -----強制運行