一、Git概述
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
1、特点
1)分布式版本控制
2)多个开发人员协调工作
3)有效监听谁做的修改
4)本地以及远程的操作
2、一般开发模式
1)项目最初阶段(你是该项目的第一个开发人员)
- 初始化项目(init),提交本地的代码到仓库(add+commit),将本地仓库的代码推送到远端库(push)。
2)项目已经开发阶段(此时git上已经有工程了)
- 你需要从远端库克隆代码到本机(clone),此时本地仅有一个master分支。新建dev分支并切换、在dev分支中进行开发工作,其实就是修改并提交代码(add+commit)。当开发的dev分支的代码没问题时,将dev分支合并(merge)到master。将master推送到远端分支,至此,其他的项目开发人员就可以查看到你提交的代码了!
- dev分支也可以是修复某个bug或者为了开发某个issue建立的,当bug已经修复或issue开发完成时,把dev合并到master之后,就可以把它删除了。
二、Git基础命令
1、基本操作
1)git init :初始化本地git仓库(创建之后就会在当前目录生成一个.git的文件)
2)git clone :从远程仓库拷贝数据(将git仓库中的工程down下来,基本都是用clone,去仓库中将已有工程down下来)
git clone http://10.1.1.119/gitlab/xxxx.git 下来的代码默认是master分支的。如果想clone指定分支的代码
git clone -b sit http://10.1.1.119/gitlab/xxxx.git
sit就是一个分支,http://10.1.1.119/gitlab/xxxx.git为源码的仓库地址
3)git add (filename) :添加文件(把文件添加到缓冲区)
加所有文件到缓冲区(加all可以添加被手动删除的文件,而加“.”不行)
git add .
git add --all
4)git rm filename :删除文件
5)git status :查看状态(查看git库的状态,未提交的文件,分为两种,add过已经在缓冲区的,未add过的。add过的文件是绿色,未add过的文件是红色)
6)git commit :提交(将缓冲区代码提交至git本地仓库,注意:如果修改了文件但是没有add到缓冲区,也是不会被提交的)
7)git pull :从远程仓库拉取数据
8)git push :将本地仓库的代码推送至远程仓库(本地仓库就是.git文件,远程仓库就是服务器仓库gitlab或github或Gogs)
9)git ignore :忽略文件
Androis Studio一般忽略以下不需要增加到版本库的文件:
1).idea 文件夹,此文件夹是用来保存开发工具的设置信息。
2).gradle 文件夹,此文件夹是用来保存gradle的依赖信息。
3)所有的 build 文件夹,build文件夹是用来保存编译后的文件目录。
4)所有的 .iml 文件,是用来保存开发工具信息。
5)local.properties 文件,是用来保存项目依赖信息。
提交到远程仓库一般都是:commit–>pull–>push
2、分支管理
1)git branch :查看分支的情况,前面带*号的就是当前分支
2)git branch 分支名 :创建分支
3)git checkout 分支名 :切换分支
4)git checkout -b 分支名 :创建分支并切换到创建的分支
5)git merge 分支名 :合并某分支的内容到当前分支
一个经常性的操作就是,将一个分支(sit)合并到主工程(master),分为两步骤: 第一步:首先切换到主工程 git checkout master 第二步:把分支合并到主工程 git merge sit
三、Android Studio中使用Git–创建分支、合并代码
以上命令均对应Android Studio里Git插件的功能,请参考:
- 在实际的开发中,最多的操作就是,创建分支–>合并代码–>解决冲突
- 默认情况下一个项目只有一个主分支(master),在实际开发中,需要新开分支来并行开发。项目的主分支类似于一个链表,每次我们进行push的时候指针master也就移动到最新的位置。在主分支的最新节点开启一个新的分支后,在新的分支上进行的操作和主分支相同,不过并不会影响主分支。
1、创建分支 VCS–>Git–>Branches
点击New Branch,在新的弹窗中输入新的分支名点击ok保存之后,就会切换到新创建的分支里。
创建成功后Git Branches的下面可以看到Current branch。然后就可以在这个分支上进行开发和push,push成功之后就可以在远程仓库看到这个新建的分支了。 (如上图:b_9就是我的master分支了,b_9_Business是我基于b_9创建的一个开发分支,我会在b_9_Business分支上开发“商户功能”,在开发过程中我将b_9_Business分支上传到git上,并每天都往上push代码,等开发完成将b_9_Business分支merge到b_9分支上)。
2、合并代码
在新的dev分支上的工作完成后就要合并到主分支master上了,步骤是:
第一步:当前分支切换到主分支checkout
第二步:选择要合并的分支merge
Andrid Studio的右下角有:创建分支、切换分支、合并代码
注意:如果A分支和B分支都是在主分支master上开了一个分支,A完成工作后合并的主分支,随后B也合并到主分支,这时候有可能会出现代码冲突。这个冲突是必须人工解决的吗,就像多人同时操作主分支的时候出现这种情况一样。