Git的使用
Posted 我来看烟花
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git的使用相关的知识,希望对你有一定的参考价值。
我们就以Github为例
简单来说Git可以分为以下几点:
接下来我们就进行GitHub服务端创建
1、首先你要有一个Github账号
2、一般我们使用的git管理工具都是SourceTree
SourceTree是客户端的版本控制工具,是一个又Git命令组合而成的可视化工具,支持创建、克隆、提交、push、pull、和合并等操作
然后我们需要在github上创建自己的仓库
项目过滤文件清单: 配置哪些文件不用上传到GitHub服务器,通常以文件类型区分。(我们用cocoapods时只需要上传podfile就行了,不需要上传pods文件夹中的文件了,我们就在这个过滤文件中添加一个 ‘/pod’, 这样上传项目代码时就不会上传第三方代码了。)
做完这些以后我们就可以进行客户端的配置了
克隆仓库 (与之前创建的仓库建立联系)打开SourceTree,点击 ‘+ New Repository’ 然后选择 ‘Clone from URL’(不同版本略有不同)
操作面板简介
然后新建一个工程 将工程中的文件 拉倒我们创建好的Git文件夹中
回到SourceTree
其中 2 是未暂存区,如果添加或者修改了一个文件,该文件暂时不会 被git系统管理,这些文件放 在未暂存区。在这儿里勾选一个文件后, 会将文件移到暂存区。
其中 3 是暂存区。如果一个文件被git系统管理,但是尚未被系统登记 在案就会处在暂存区。未暂存区的 文件想要被git记录就必须先进入 暂存区。
主要使用步骤:
1、需要git管理的文件,从未暂存区选到暂存区(某些版本勾选就会自动变化)
2、点击commit(要填写提交信息),将暂存区的文件保存到git仓库中,文 件的修改记录才会保存到本地git仓库中
3.、将本地提交的文件变更信息提交到远程服务器中的仓库(push)
说白了 就是 上传和提交的过程
主要说的是在开发团队中我们是怎样使用的
Git作为最强大的分布式版本控制系统,支持多人共同开发
GitHub为开发者提供了非常友好的增加成员方法。
点击右侧的settings
成功添加进入项目的开发者,按照之前SourcesTree的配置方法再来一遍即可。
我们现在假设你的伙伴修改了项目中的”ReadMe”文件,然后他 将修改后的文件Push到了GitHub中。我们该如何得知这一修改
第四点 就是 分支
1、以上的操作都是在一个master分支上操作的,也就是我们一直在 操作master分支,这样管理起来非常的不方便,代码也比较容易 混乱。
2、为了不污染我们的主分支,我们一般都拷贝一个master的副本(创 建分支),然后修改副本的代码,这样我们一直操作的就不是 master分支,而是master分支的副本了。
3、我们将这个副本分支称之为”子分支”。
点击Git Flow
创建分支:
1. develop : 创建一个develop分支,在develop分支上进行开发
2. feature : 然后在develop上附属创建一些特性分支,比比如我们可 以为登陆功能创建一个login分支,为注册功能创建一个register分支, 为用户管 理创建一个user分支,这些功能分支都属于feature分支
3. release : 我们每次产品发布时都会将代码更新到master上进行打 包上传,然后更新打包代码到release分支上,这样就可以在以后只查 看释放 分支来查看每次上线时产品的代码了.
4. hotfix : 在代码更新到master分支后,突然发现代码中有bug,这是 我们直接创建一个热修复分支,改完这个bug后立即更新到master分 支了.
再次点击git flow创建功能分支:
点击git Flow创建功能分支
我们可以用同样的方法为不同的功能模块创建多个分支
分支切换
切换分支的操作十分简单,只需要双击想要切换的分支即可。
切换成功后,本地工程中代码即切换到了相应的版本。
假如我们的login分支已经完成,现要将该分支合并到开发者分支中去:
注意:这个删除还是保留分支,如果删掉分支,以后就查不到这个分支
如果保留分支,下次仍能查看该分支。
团队开发过程中我们会遇到很多问题
在团队开发中,多人同时对某一个文件进行改写的情况非常常见。 同步代码的过程中,git会自动检查冲突,并尝试进行"自动合并 "。
自动合并并非万能,有很多情况,自动合并并不能区分用户的真正意图。
比如:用户A将变量名改为 myLabel1 ,并提交到Git; 用户B在未拉取的情况下,将变量名改为 mylabel2并且 提交。那么就会产生冲突。
下面我们将构造一个冲突,并且尝试解决它。我们假设如下情形: 用户A将ViewController.h中一个UILabel变量名更名为”huhu3”, 之后提交到Git。
用户B在未拉取的情况下将ViewController.h中的UILabel变量更 名为”huhu4”。当用户B提交至Git时,既发生冲突。
用户B推送更改时,会弹出提示框 报冲突
冲突一旦产生,SourceTree会为我们报出到底是哪个文件出现冲突 会在冲突的文件后面标注!号
处理的方法 我们也有多种途径
1、使用他人的版本
2、使用自己的版本
3、进行手工合并
针对手工合并代码冲突来说
多数情况, 冲突的产生并非靠覆盖掉对方的版本为最终目的, 如果双方的代码量较大,直接覆盖对方就显得太残酷。
我们可以选择”手工合并”代码的方式, 来比对二人到底在这个文 件中,哪一行(或者哪一块)产生了冲突,我们解决冲突的部分, 然后让Git自动帮我们合并没有冲突的部分,达到皆大欢喜的结 局。
在次 我要推荐一个软件
手动合并冲突代码,需要找到哪一部分代码产生了冲突,在比对 文件时,我们通常借助第三方的文件比对软件来帮我们寻找。
这里推荐BeyondCompare。
下载地址: http://www.scootersoftware.com/download.PHP
需要注意的是 不管是选择任何一种策略,都要重新提交一次本地变更
在使用Git的时候不要怕出错 多多使用才会越来月熟练。
最后推荐一个有关git的博客 对GIt不太了解的朋友可以看看 学习下
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
【链接】在Xcode中使用Git进行源码版本控制
http://www.cocoachina.com/iOS/20140524/8536.html
以上是关于Git的使用的主要内容,如果未能解决你的问题,请参考以下文章