1. 程式人生 > 其它 >git上傳更新專案-錯誤總結

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 的情況就是為了應對多人合併開發的情況,

  1. commit 是為了告訴 git 我這次提交改了哪些東西,不然你只是改了但是 git 不知道你改了,也就無從判斷比較;
  2. pull是為了本地 commit 和遠端commit 的對比記錄,git 是按照檔案的行數操作進行對比的,如果同時操作了某檔案的同一行那麼就會產生衝突,git 也會把這個衝突給標記出來,這個時候就需要先把和你衝突的那個人拉過來問問保留誰的程式碼,然後在 git add && git commit && git pull
    這三連,再次 pull 一次是為了防止再你們協商的時候另一個人給又提交了一版東西,如果真發生了那流程重複一遍,通常沒有衝突的時候就直接給你合併了,不會把你的程式碼給覆蓋掉
  3. 出現程式碼覆蓋或者丟失的情況:比如A B兩人的程式碼pull 時候的版本都是1,A在本地提交了2,3並且推送到遠端了,B 進行修改的時候沒有commit 操作,他先自己寫了東西,然後 git pull 這個時候 B 本地版本已經到3了,B 在本地版本3的時候改了 A 寫過的程式碼,再進行了git commit && git push 那麼在遠端版本中就是4,而且 A 的程式碼被覆蓋了,所以說所有人都要先 commit 再 pull,不然真的會覆蓋程式碼的