git養成記之二

前幾天通過大佬們的提醒,發現-fforce強推,即利用強覆蓋方式用你本地的代碼替代git倉庫內的內容,因此說git push -f是一個比較可怕的命令,和rm -rf同樣可怕?git

可是若是你不強推,可能就出現了這樣的錯誤

error:failed to push some refs to …shell

當要push代碼到git時,出現提示:fetch

error:failed to push some refs to ...

Dealing with 「non-fast-forward」 errors

From time to time you may encounter this error while pushing:

$ git push origin master 

To ../remote/ 

 ! [rejected]        master -> master (non-fast forward) 

error: failed to push some refs to '../remote/' 

To prevent you from losing history, non-fast-forward updates were rejected

Merge the remote changes before pushing again.  See the 'non-fast forward'

section of 'git push --help' for details.

問題(Non-fast-forward)的出現緣由在於:git倉庫中已經有一部分代碼,因此它不容許你直接把你的代碼覆蓋上去。this

強推是解決辦法之一,不過強推會覆蓋以前的東西。。。至於覆蓋了能不能找回,我尚未具體研究。命令行

另外還有一個辦法,先把git的東西fetch到你本地而後merge後再push。code

git fetch
git merge

這2句命令等價於rem

git pull

但是,這時候又出現了以下的問題:get

上面出現的 [branch "master"]是須要明確(.git/config)以下的內容it

[branch "master"]

    remote = origin

    merge = refs/heads/master

這等於告訴git2件事:io

1,當你處於master branch, 默認的remote就是origin

2,當你在master branch上使用git pull時,沒有指定remotebranch,那麼git就會採用默認的remote(也就是origin)來mergemaster branch上全部的改變

若是不想或者不會編輯config文件的話,能夠輸入以下命令行:

$ git config branch.master.remote origin 

$ git config branch.master.merge refs/heads/master

以後再從新git pull下。最後git push你的代碼吧。

總結:你的本地代碼和遠程倉庫有衝突的時候,就會提示以上錯誤,說白了你就是要解決這些衝突,這樣才能push到遠程倉庫當中去。若有疑問,歡迎留言交流。原文地址

MY BLOG

相關文章
相關標籤/搜索