首页 > 技术文章 > pull request的一些思考

dahao1020 2016-08-27 11:59 原文

   由于是团队使用的是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版本了。

 

推荐阅读