使用git處理github中提交有衝突的pull request

追逐時光者發表於2020-11-12

前言:

  為什麼要寫這篇文章,因為前段時間有一個開源的github中的專案有一個朋友提交了一個pr看了下是幫忙優化了下程式碼(十分感謝這位網友)。但是他提交的pr剛好和我的專案有許多的衝突導致無法自動合併,在github中提示只能使用命令列指令進行合併,因為這種情況處理的比較少為了以後方便使用在這裡記錄一下。

github中的大概命令合併指令

1、首先我們需要下載一個git分散式管理工具

下載Git連結地址:https://git-scm.com/

2、然後我們需要clone下我們的專案

git clone sgit@github.com:YSGStudyHards/NPOI-ExportWordAndExcel-ImportExcelData.git(ssh專案連結)

3、建立並切換到該分支,並同步到master中

git checkout -b 建立的分支名 master

使用git branch檢視當前所屬分支

 4、拉取有衝突的pr到該分支中

git pull https//github.com/某人的/某專案的.git master  

github中的命令語句

git pull git://github.com/hongbobaoer/NPOI-ExportWordAndExcel-ImportExcelData.git 20201109

5、直接開啟衝突檔案手動解決衝突

當專案拉取下來以後,我們就需要解決有衝突的檔案資訊了  

由下面的衝突檔案中的衝突內容我們瞭解到:
<<<<<<< HEAD
6月19日 pingrixuexilianxi新增了內容
=======
6月18日 pingrixuexilianxi2修改了這個檔案哦
>>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5
<<<<<<< HEAD到 =======裡面的【6月19日 pingrixuexilianxi新增了內容】是自己剛才的Commit提交的內容
=======到 >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5裡面的【6月18日 pingrixuexilianxi2修改了這個檔案哦】是遠端程式碼庫更新的內容(即為pingrixuexilianxi2原生程式碼庫推送修改內容)。

手動衝突解決方法

根據專案需求刪除不需要的程式碼就行了,假如都需要的話我們只需要把 <<<<<<< HEAD=======     >>>>>>> a8284fd41903c54212d1105a6feb6c57292e07b5都刪掉衝突就解決了(注意,在專案中最後這些符號都不能存在,否則可能會報異常)。

或者可以使用git視覺化管理工具(推薦)

原因:由於有些人使用程式碼合併比較生疏,為了避免出錯推薦使用sourcetree進行解決衝突合併。

詳細使用sourcetree地址參考:https://www.cnblogs.com/Can-daydayup/p/13128633.html

6、合併更改並在GitHub上更新

注意:這裡是沒有使用視覺化工具合併的時候才需要自己使用程式碼去執行合併,提交,更新操作!

git commit -a //把修改提交到新建的分支上,會提示你成功merge原生程式碼到這個人的程式碼庫

git checkout master //切換到自己的主分支上

git merge 建立的分支名 //將新建的分支合併到自己的分支上

git push origin master //將程式碼推送的遠端倉庫中

 

相關文章