git上傳更新專案-錯誤總結
前些天做完專案一部分內容的時候,想git上傳程式碼上去遠端倉庫裡,卻出現了不少git的錯誤提示資訊。在這裡總結一下吧:
一、正確的git上傳更新專案步驟為:
1、git add . 新增
2、git commit 提交
3、git pull 同步
4、git push 上傳更新
那麼在這個正常的步驟中,一般人會出現的問題有:
二、 failed to push some refs to '[email protected]:你的遠端庫名.git'
這個是你git push上傳更新程式碼的常見錯誤。我個人的理解是,遠端倉庫中的專案程式碼跟你本地倉庫中的程式碼為進行版本對比,也就是說,git他不知道你修改了哪部分程式碼,在上傳的時候,就容易出現在“同時修改同一行程式碼”的情況發生;當git對比兩個版本後,他知道了你修改了哪部分,在根據修改的部分進行上傳更新;其他人再次訪問遠端倉庫的時候,也就可以下載當前最近的版本和了解修改的程式碼,以至於不會出現同一時間不同的人員上傳更新程式碼。
解決辦法是:
git remote add origin "倉庫地址"
gti pull origin master --allow-unrelated-histories
三、fatal: refusing to merge unrelated histories
中文翻譯是:“致命的:拒絕合併無關的歷史”,因為他們是兩個不同的專案,要把兩個不同的專案合併,git需要新增一句程式碼,在git pull,這句程式碼是在git 2.9.2版本發生的,最新的版本需要新增--allow-unrelated-histories
解決辦法是:
改“git pull origin master”為:“gti pull origin master --allow-unrelated-histories”
四:為什麼要先commit在pull,而不能先pull在commit上去呢?
這個先 commit 再 pull 再 push 的情況就是為了應對多人合併開發的情況,
-
commit
是為了告訴 git 我這次提交改了哪些東西,不然你只是改了但是 git 不知道你改了,也就無從判斷比較; -
pull
是為了本地 commit 和遠端commit 的對比記錄,git 是按照檔案的行數操作進行對比的,如果同時操作了某檔案的同一行那麼就會產生衝突,git 也會把這個衝突給標記出來,這個時候就需要先把和你衝突的那個人拉過來問問保留誰的程式碼,然後在git add && git commit && git pull
- 出現程式碼覆蓋或者丟失的情況:比如A B兩人的程式碼pull 時候的版本都是1,A在本地提交了2,3並且推送到遠端了,B 進行修改的時候沒有
commit
操作,他先自己寫了東西,然後git pull
這個時候 B 本地版本已經到3了,B 在本地版本3的時候改了 A 寫過的程式碼,再進行了git commit && git push
那麼在遠端版本中就是4,而且 A 的程式碼被覆蓋了,所以說所有人都要先 commit 再 pull,不然真的會覆蓋程式碼的