git如何處理別人的pull request及解決沖突 (轉)


原貼地址

出過兩次了,每次都查很多資料,太蛋疼,記錄在此。

當你的項目比較牛逼的時候,有人給你貢獻代碼,但他修改的地方恰恰你前陣子也修改了,這樣在github中就不能夠自動merge了。

因此你需要手動去解決沖突。首先要在本機安裝好命令行工具gitbash,之后用clone拉下你的項目,之后

按照以下命令輸入

git checkout -b 某人-master master

git pull https//github.com/某人的/某項目的.git master

這時候命令行會提示你有沖突,沖突文件是啥,那如何解決沖突呢,很簡單

在同步代碼的過程中,git會自動檢查沖突,並嘗試進行**自動合並**。最好的情況應該是大家同時修改一個文件,但是大家修改的地方不同了。在這樣的情況下,git會進行非沖突合並,這時,在調用 git pull 的時候,git會嘗試進行非沖突合並。
而在合並過程中有沖突的時候, git 會把修改記錄直接保存在文件中,讓開發者判斷文件如何解決合並。例如,在一個描述文件中同時修改了一句話,在合並的時候,git會這么做:

<<<<<<< HEAD
It's not a project cool enough for you to enjoy the code but a mix of my thoughts in the year 2012~2013. I didn't know where the project leads to. Hope it will became useful after practice.
=======
It's not a project 

即把兩個更改都寫在文件上,但是用=======來區別發生沖突的位置,在=======以上是 HEAD,即本地的代碼;而=======以下則是來自遠程的更改了。這個時候,你可以選擇保留遠程或本地的修改或者都不要(簡單地說,把不需要的內容刪除即可)。

 

也就是說我們把文件修改好后,把增加的那幾行head >>><<<之類刪掉就ok啦。之后沖突修改完畢,我們繼續輸入

git commit -a //把修改提交到這個人的分支上,會提示你成功merge本地代碼到這個人的代碼庫

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

git merge 某人-master //

還要記着一點,本地修改代碼前一定要先pull一下看看,記得慎用github的在線編輯功能


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM