课程复盘 | Github协作指南
原文链接:7-2 Github协作指南
目标
使用Github进行代码协作
注意
本篇指南区分为,「主程篇」、「副程篇」以及「共同遵守篇」,除了共同遵守篇一定需要阅读,请针对自己在团队里的角色进行阅读就可以了,避免过多的资讯导致掉坑
主程篇
Step 0: 找到你的队友
两人一队,确定一位主程。
Step 1: 主程邀请你的队友
打开要进行协作的repo,点击 Settings
-> Collaborators
在页面中间的搜索框中输入队友github的username,如果找到,框下面会跳出队友头像,点击头像,然后点击 Add collaborator
,这样就邀请成功啦。
Step 2: 协作之前,将最新分支merge到master
如果master分支的更新时间不是最近,那么你需要做这一步
比如你的最新分支是story5,那么在终端 git checkout master
,然后 git merge story5
,再推到github git push origin master
Step 3: 主程 merge 来自副程或自己的 pull request
点击 Pull requests
可以看到所有 pull requests
记录
点开 pull request
如果显示 This branch has no conflicts with the base branch
,这种情况可以直接merge,点击 Merge pull request
,然后 Confirm merge
就可以了
merge完成
那么,什么情况不能直接merge呢?
显示 This branch has conflicts that must be resolved
,这时 Merge pull request
按钮呈灰色,无法点击,必须先解决代码冲突才能继续。
Step 4: 解决冲突
如何解决冲突?
你可以选择不处理这个pull request
,在本地修改后再上传一个新的pull request
或者按照github给出的指令处理冲突
点击 Resolve conflicts
,左边显示出代码有冲突的所有文件,打开其中一个文件
可以看到,<<<<<<<
和 >>>>>>> master
把代码有冲突的部分包了起来
=======
又把这部分分成了上下两半
上半部分是当前pull request
中这个文件的写法
下半部分是当前master分支上这个文件的写法
接下来把多出的三行符号删掉,保留你需要的代码
比如
然后点击 Mark as resolved
冲突全部解决之后,会显示 Resolved all conflicts
,点击 Commit changes
之后会跳转回当前pull request
地址,显示 This branch has no conflicts with the base branch
,点击 Merge pull request
,然后 Confirm merge
就可以了
Step 5: 在本地获取 merge 后最新的代码
当最新的代码已经合进 master 分支里,主程只需要在本地的终端checkout回master分支,然后运行git fetch
那么主程就能够得到最新的代码了
副程篇
Step 1: 接受主程邀请,成为协作者
副程所使用的github注册邮箱会收到一封邀请邮件
点击 View invitation
后,跳转到github页面
点击 Accept invitation
,会跳转到协作repo
,同时收到一封确认邮件
协作repo如图:
Step 2: clone 主程的代码一起共同开发
第一次把代码下载到本地,使用 git clone
主程的repo地址
在终端运行cd xxx(专案名)
cp config/database.yml.example config/database.yml
bundle install
rake db:migrate
再打开rails s
,才能在本地跑起来
如果有先写好的seed
档案,也别忘记对数据库初始化,运行 rake db:seed
就可以了
这里请直接 clone
主程的专案到本机进行开发,自己的专案不需要在管。
可以在你 clone 下来的专案输入 git remote -v
,检查当中的网址是否为主程的 github 帐号,如果不是,请注意你会无法发送开发功能给主程,请在此刻修正。
Step 3: 发送 Pull Requset 给主程吧
在本地终端切出一只分支,尝试修改某个文字之后进行 commit 存档,然后 push 这只分支到 github 吧!
接下来我们就能够发 pull request
给主程啰
点击「New pull request」
,会转成以下画面。把base fork
点选主程的repo(通常是第二笔)
可以看到页面跳转成如下。
① 确认已经转到主程的repo;
② base选择你想要merge的分支,可以选择「master」
(一般正式协作会另外创建一个develop
分支,把开发的进度放到develop,master一般于production环境);
③ compare选择副程的分支名;
④ 查看是否是「Able to merge」
状态;
⑤ 写下你的comment。
确认以上五点后,点击「Create pull request」
点击「Merge pull request」
你就完成提交了功能开发的分支给主程啰,你的任务就是
「本地切分支开发功能」 -> 「开发完后 push 当前分支」 -> 「上 Github 开 pull request 给主程」
共同遵守篇(主程 + 副程都得这么做)
Step 1: 获取最新代码
每天于开发前执行 git fetch origin
,获取当前所有分支的讯息
获取最新代码时,先 git checkout master
,然后 git pull origin master
Step 2: 开发项目
现在你在master分支上,对代码进行任何改动之前,一定要切换到一个新的分支,在新分支上进行修改
分支命名规则 git checkout -b name-feature (姓名-功能)
记住一个原则,请勿直接在 master 开发并直接推送到 github ,容易出现双方代码不对齐的情况,并且会不断发生冲突,请详记!
Step 3: 上传分支
上传之前,一定要在本地进行测试,确认没有bug才可以上传
|
|
代办:补充制作一个流程图。