1. 程式人生 > >git操作相關問題整理以及解決方法(持續更新)

git操作相關問題整理以及解決方法(持續更新)

作為一名合格的程式設計師,版本控制工具肯定是要會使用的。博主以前一直用的是SVN,git用的不是很多,如今新東家用的是git,博主在使用過程中遇到一些問題,想著肯定也有小夥伴遇到相同的問題,所以就想總結一下分享出來,日後也會持續更新。
1.我們pull程式碼時,有時候會出現 git: Your branch and ‘origin/master’ have diverged
描述:你的分支和原分支有分歧
解決方法:
1).git fetch origin
git reset --hard origin/master
本地回滾至最初更改前的狀態,可以解決問題
2).將游標放到在vim框的末尾,然後在鍵盤上 按下 Shift + z z 就可以了
2.git pull時出現Auto Merge Failed; Fix Conflicts and Then Commit the Result.
輸入git status結果如下
在這裡插入圖片描述

從git status的結果可以發現:有兩個檔案存在合併衝突
git pull執行過程中分兩步(1)從遠端pull下origin/master分支(2)將遠端的origin/master分支與本地master分支進行合併
這裡可以看出問題是在第二步上
解決方法:
1).遠端的分支是需要的,可以丟棄本地分支內容,則執行如下命令:
git reset --hard origin/master
或者git reset --hard ORIG_HEAD
2).本地修改需要保留,則對unmerged的檔案進行手動修改,刪掉衝突部分,然後執行如下命令
$:git add filename
$:git commit -m “message”
3).想廢棄這次合併,回滾至合併之前狀態,可以執行如下命令:
$:git reset --hard HEAD
3.git push程式碼時錯誤: rejected non-fast-forward
問題描述:檔案衝突,本地的程式碼和遠端Repository中的檔案個數不一致(即遠端Repository中存在本地專案中不存在的檔案)或本地專案不是在遠端Repository程式碼的基礎上修改的。也見於初始上傳專案的時候,遠端Repository中已有程式碼。
解決方法:將遠端Repository中的程式碼pull到本地進行merge,然後再進行Push,即可完成程式碼提交。或者 強制提交程式碼,命令列的話加上 -f 引數。
4.Git出現|MERGING情況
這是合併衝突
解決方法:
1).解決衝突,刪除程式碼中矛盾的程式碼,然後上傳或者下拉
2).git reset --hard head回退到操作前的狀態
3).discard刪除下載的,或者上傳的程式碼,然後分別check out兩個分支