由於是團隊使用的是PR工作模式,一般一個issue或者bug沒有處理完成,是不能Pull Request(簡稱PR)的,只能在自己的fork的倉庫上commit和push, 完成了以后再向主倉庫的相關分支發送PR,之后由測試人員在測試機上fetch PR主倉庫中的PR,進行測試,測試完畢通過之后才合並PR到主倉庫的主分支上。
PR的工作模式是優秀的開源軟件工作模式的代表,當你的PR被開源項目作者合並那是一件很開心的事。這種模式也可以方便做代碼審查,我們每一天都會輪班對當天提交的PR做代碼審查。
最近開了一個新分支來開發一個大功能,讓我很頭疼的是在埋頭開發時,沒開發完不能隨便PR到主倉庫,但是偶爾要從主倉庫中拉代碼下來更新,這時候可能會有沖突,而太久沒pull,即使只是一個文件沖突了,解決沖突后還要把別人commit的代碼都重新提交一次,就個文件量就很大了。導致我在碼雲上pull request時,總是提示無法加載diff數據。
遇到這種情況我目前的解決辦法是:
1.先刪除當前為了解決沖突的commit:git reset --hard HEAD^
2.還原沖突文件:
git log xxx 查改改文件的日志
git reset 版本號 xxx 回退到指定的版本
git commit -m "文件回退" 提交本地
git checkout xxx 更新到工作目錄
3.重新合並分支(我是在master分支上pull主倉庫的代碼,然后再開發分支上合並master分支):git merge master
4.重新在沖突文件上補上你沖突的內容,然后重新add、commit即可。
在進行以上操作時最好先git checkout -b 出一個備份分支,最好還要push到遠程倉庫,畢竟數據是無價的。
當然也可以用git reflog找回你之前回退的版本號,然后再git reset --hard 版本號。(版本號取前幾位就行了)這樣就回退到你原來的commit版本了。