常规使用流程
- 加入项目组后,获得项目的git仓地址后
- 使用checkout进行检出,选择自己的branch(分支)或者检出master分支后new branch(创建新分支)并切换到自己的分支
- 然后编写代码,当日工作完成后进行commit(预提交),同时需要注释本次提交的简介(mark)。
- 如果本分支有两人以上同时开发,在push(提交到远程git仓)之前需要先pull更新
- 在pull之后通常有可能出现冲突,联系相关开发组成员后确定冲突的选择后,再运行一下代码看是否有问题
- 确认无误后进行push提交
- 开发一段时间后,大家需要提交到master分支(主分支),使用merge into主分支,注意冲突处理。
- 如果master分支有新内容,可以使用merge from主分支来更新自己的分支
checkout用途
主要用在首次获取项目和本地项目工程整体丢失的时候,直接获取完整的项目的某个分支源码。
比如:我新加入这个项目组,我就需要使用xcode的checkout进行获取
xcode的工具栏 - source control - checkout**
选择获取源
选择分支
如果没有多个分支则只自动获取master分支检出项目保存位置
这样一来就获取了一个master分支的项目
commit预提交
使用commit将变更的记录标注为需要提交,并设置要提交的代码说明
如:xcode工具条 - source controller - commit
具体说明见图片
pull更新
如果多人同时在同一个分支开发的话,在你commit之后,push之前,有某个开发者commit并push了他的代码,那么服务器的版本就比你本地匹配的服务器版本更加新了,那么直接push就会出现这个问题
此时我们就需要先pull进行更新了
source control - pull
在pull更新后发现Arom和我同时修改了其中的几行,于是出现了歧义警告(红色),需要我来处理。
歧义处理有四种方式:
将服务器(右侧)上的版本的内容插入到我的本地版本(左侧)的下方
如图:
以我的版本为准,服务器版本歧义区域无效
如图:
以服务器版本为准,我的版本歧义区域无效
如图:
将服务器(右侧)上的版本的内容插入到我的本地版本(左侧)的上方**
如图:
一般来说,如果确认服务器的版本已经无效,则选择以本地版本为准(按钮2)
如果两边版本都有部分或全部有用,则可以选择1或4,然后pull完成后再删除没用的部分在次commit,在此push即可
时刻记住:本地版本是即将要提交到服务器的版本,所有的最终改动在本地完成后,push提交到服务器,就变成了服务器版本
push提交
在处理完上面歧义后,我和Arom沟通后删除了部分内容,再次commit预提交。然后pull检查没有更新了,再push提交到远程服务器git仓
source controll - push
注意提交的分支
提交成功
merge合并
在xcode中merge合并分为merge into 和 merge from
merge into:将当前分支合并到另一个分支中
merge from:将另一个分支合并到当前分支中
merge 在 source control - 分支名称 - merge into/from里 如图
merge into
比如:我们的代码在devhy分支完成的差不多了,如果需要我们来提交,这时就需要使用merge into
目前我们可选的只有主分支(主分支之前一直没被更新过)
这时又发现了冲突歧义,马上联系相关开发者进行处理
merge完成,发现我们跳到master分支了,因为我们一切操作是在本地的git仓库操作的,发现我们刚才的操作给主分支的这个文件判断出是有修改的,果断着手commit - pull - push来更新远程git仓服务器的master分支
这么一来主分支完成了更新,那么就得切回自己的分支继续开发工作了,切换分支(switch to branch)也和merge into一样source control里
因为不确定服务器端的devhy分支是不是最新的,所以我们还是切换成本地的devhy分支
注:local branches表示本地的git仓的分支,origin表示是远程git仓服务器的分支列表
merge from
一般merge from是在master分支更新了,保持你的分支能够使用到master分支的新特新来使用的
如:项目管理者在master分支更新了api接口信息或者宏定义之类的,你需要使用到这些新的功能,则需要在你的分支里使用merge from
具体用法和merge into差不多,比如:我们的主分支删除了一些打印,我们得更新,一般系统会自动判断新增右边服务器上的内容
然后点击merge即可
谨记提交三部曲:commit-pull-push
pull完成有歧义要处理歧义,处理完成后再走一遍三部曲,直到push成功