Git 學習 —— 錯誤分析與解決

聲明:

    本文是以我自己學習Git的資料作爲總結,希望可以對您有所幫助。下面介紹一些在工作用使用git遇到的問題,希望可以對遇到同樣問題的你有幫助。

下面介紹幾種出現的問題:

1. push的代碼依靠之前的本地提交:

現象與原因:多次git commit 但是隻Git push最後一次的git commit。

   git commit 1   git commit 2   git commit 3

             1 --------------> 2 -------------> 3

                                                          |

                                                   git push

如上面所示,在1的基礎上有兩次提交他們分別是2和3。而他們從下到上是相互依賴的,所以如果只Git push 3 ,而沒有Git push 2,這個時候就會在官網提示代碼不能merge的情況。這時因爲3依賴的2還沒有git push,所以這個時候會報錯。

 解決辦法: 使用git reset --hard 1commitID來將本地提交強制回到1,這個時候在本地倉中只剩餘1。而我們需要從新對代碼進行提交,而提交的流程爲上面0~7的流程。而從新提交代碼後這個時候會從新出現一個2的提交,這個時候我們在使用git push 來將2從本地倉push到遠程倉,就可以了。

2. push後無法再次push:Unpack error

現象:當git commit時格式錯誤,我們並沒有注意到,但是git push後在公司官網會提示格式錯誤,所以這個時候需要從新對格式進行更改,這個 時候可以使用git commit --amend命令來對commit 的內容進行更改,而更改後再次使用git push時會出現錯誤。

原因:這是由於在默認的情況下Git push 會向服務器推送時做優化處理,從而來將發送的包降到最低。而這樣優化的方式是比較本地倉與遠程倉的內容,並將差異的部分上傳,這個時候Git push 默認使用--thin選項。而我們上面的更改只是對commit的內容進行了修改,而沒有對本地倉中的內容進行修改,所以他們比較會發現這個兩個倉中的內容沒有差別,所以他認爲這次push是沒必要的,所有就提示失敗了。

解決辦法:使用:git push 加 --no-thin參數來push到遠程倉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章