聲明:
本文是以我自己學習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到遠程倉。