一般都是我folk别人,所以现在别人folk我之后,并向我提交了pull request,有点不知所措,所以小小研究了下。
比如现在mygoare fork了我的项目,修改后提交了pull request。我可以在github上看到他的pull request,GitHub如果检测到Pull Request中包含的提交可以直接合并,会显示自动合并的提示信息。点击“Confirm Merge”按钮即完成Pull Request中所含提交的自动合并。自动合并完成后,自动关闭Pull Request。
实际上在很多情况下,Pull Request所含提交有可能造成合并冲突,那样的话GitHub不再、也不能提供自动合并功能,就必须采用手工合并的方式。
创建分支
$ git checkout -b mygoare-master master
现在有个mygoare-master 分支,并且现在在这个分支上
从mygoare的远端拉下来,有冲突,无法自动合并,须手动合并
$ git pull git://github.com/mygoare/lehuo.git master
查看状态(现在所在分支,两个版本冲突的文件)红色的为有冲突的文件
$ git status
可以查看冲突之处
$ git diff
用编辑器打开相应文件修改
例如homepage.html
<<<<<<< HEAD
我的代码(多一个box-shadow)
=======
mygoare的代码
>>>>>>> b8f7a4ef57ef38eefb24ff987a8c2e51a1a30b9e
选择其一保留,得如下
改完所有冲突后,就没有红色冲突了
$ git add -A
$ git status
提交到本地
$ git commit -m "merge mygoare's code"
因为现在在mygoare-master分支上,需要切换到我的master
$ git checkout master
合并mygoare-master到我的master上
$ git merge mygoare-master
提交到远端
$ git push
提交成功
github的pull requests自动变为0
/*********************************************************/
补充:
查看分支,带星绿色的是现在所处的分支
$ git branch
删除分支mygoare,这个是之前测试用的
$ git branch -D mygoare
添加远端地址,远端名任意起
$ git remote add mygoare https://github.com/mygoare/lehuo.git
查看远端
$ git remote -v
获取mygoare的内容
$ git fetch mygoare
合并
$ git merge mygoare/master
查看提交说明,看到此次合并没有产生不必要的合并提交。
$ git log --graph -2
≡≡≡≡≡≡≡≡≡≡★ From Laker's blog ★≡≡≡≡≡≡≡≡≡≡
¤ ╭⌒╮☀Coding and changing~☀ ╭╭ ⌒╮
✪Fighting and insisting~✪