Git的详细使用
Git 是一个开源的分布式版本控制工具,这里主要讲解一下它的基本用法。
1、安装Git
Git安装包下载地址 https://git-for-windows.github.io/ 下载比较慢比较慢
也可以去我的百度云下载 链接:http://pan.baidu.com/s/1b7i0Ia 密码:au0e
虽然Android Studio也支持以图形化的形式操作Git,但本篇文章只要交大家如何使用Git命令方式去操作,Git命令不管你是用什么操作系统都是通用的。
2、创建代码仓库
从window 开始 里面找到 GIt Bash
首先配置一下 身份 ,用来提交代码的时候知道是谁来提交的,命令如下
git config --global user.name "cai784921129"
git config --global user.email "[email protected]"
配置完成后你还可以用同样的命令来查看时候配置成功,只需把最后的名字和邮箱地址去掉
接着就可以开始创建代码仓库了,所有的本地提交的代码都会被提交到代码仓库里,如果有需要还可以推送到远程仓库中(Github)
我们给 Okhttp3Demo 项目创建一个代码仓库,首先进入 Okhttp3Demo 下面
然后再目录下输入命令
git init
只需一行代码就完成创建代码仓库
仓库创建完成会在Okhttp3Demo 项目的根目录生成一个隐藏的.git文件夹 ,它是用来记录Git'操作的 可以用命令 ls-al 查看一下
3、提交本地代码
提交代码比较简单,只需要add和commit命令就可以 了,add用来把想要提交的代码添加进来,而commit则是真正的去执行提交操作
如果想提交 build.gradle文件,执行如下命令
git add build.gradle
如果添加目录
git add app
如果一次性把所有的文件添加进去
git add .
当把文件添加之后,就可以来提交了
git commit -m "first commit!"
注意一定要添加描述信息,在-m后面添加
4、忽略文件
Android 项目中有build文件都是在编译项目时自动生成的 ,我们不应该把它加入版本控制中,Git提供了这个功能,它会检查代码仓库目录下是否存在一个名为.gitigore的文件
如果存在的话,就去一行行的读取内容,并把每一行指定的文件或目录排除在版本之外。Android Studio 会自动帮我们创建 .gitignore 的默认配置 一个在app目录,一个在根目录
5、查看修改内容
如何使用Git来查看自上次提交文件,eg:我们先修改MainActivity的内容
git status
可以看到Git提醒我们MainActivity里的内容已经被修改了,查看具体的修改内容 用diff
git diff
如果你只想看MainActivity这个未报检更改的内容
git diff app\src\main\java\yu\cai\okhttp3demo\MainActivity.java
6、撤销未提交的修改,用checkout命令
git checkout app\src\main\java\yu\cai\okhttp3demo\MainActivity.java
这种撤销方式只对还没有执行过add命令的文件,如果某个文件已经被添加过,则这种方式无法撤销,这个时候需要先取消添加 使用reset
git reset HEAD app\src\main\java\yu\cai\okhttp3demo\MainActivity.java
然后再执行 git checkout app\src\main\java\yu\cai\okhttp3demo\MainActivity.java
7、查看提交记录
每一次提交Git都会帮我们记录,使用log命令查看历史提交信息
git log
当提交的记录非常多,我们只想看其中一条时, 在命令中指定该记录的ID,并加上-1参数,表示我们只想看一行
git log 3d222611832804a7e042508d14e6d9c0ae96dc16 -1
如果想看具体修改了什么内容,可以在命令中加入 -p参数
git log 3d222611832804a7e042508d14e6d9c0ae96dc16 -1 -p
8、分支的用法
分支在版本控制工具是比较重要的概念,它的作用是在现有代码的基础上开一个分叉口,使得代码在主干线和分干线同时进行开发,且相互之间不会影响
分支的英文名是 branch,如果想要查看当前的版本库当中有哪些分支们可以使用git branch
我们没有创建分支,所以只有一个主分支
创建一个分支
git branch v1.0
可以看到master前面有个:“*” ,说明目前代码还在master上,要切换到v1.0上,只需要checkout命令就可以了
git checkout v1.0
我们在v1.0上面修改的代码不会影响到master分支,如果我们在v1.0上修复了bug,在master上面这个bug依然存在,这个时候可以用merge命令来完成合并操作
git checkout master
git merge v1.0
仅仅两行命令,就可以把v1.0分支上修改的内容同步到master上面
最后如果不需要v1.0分支的话,可以把它删掉
git branch -D v1.0
9、与远程版本库协作
如果是一个人在开发的话,使用版本控制工具就无法发挥它的强大之处,我们又是如何使用Git进行团队开发的呢?这就需要一个远程的版本库,每个成员都从这个版本库中去获得原始的代码。然后各自进行开发,并且同步到版本库中就可以了,另外,团队中每个成员最好经常去获取最新的代码,防止代码冲突
比如说现在有个远程仓库地址是 https://github.com/cai784921129/OKHTTP3.git 就可以使用以下命令将代码下载到本地
git clone https://github.com/cai784921129/OKHTTP3.git
之后你在这份代码的基础上进行一些修改和提交,那么怎样把修改的内容同步到远程版本库中呢? 这就需要push命令了
git push origin master
origin 指的是 远程 git的地址 master指的是同步到哪一个分支
知道了如何上传代码到远程版本库上,那么如何从远程版本库同步代码到本地呢? Git提供两种命令来实现 fetch和pull,
git fetch origin master
执行这个命令,就会将远程版本库的代码同步到本地,不过同步下来的代码并不会合并到任何分支上,而是会存放在一个origin/master分支上,这个时候可闷可以用
git diff origin/master 来查看修改了哪些内容
之后再调用merge命令合并到主分支上
git merge origin/master
而pull相当于把 fetch和merge放到一块执行了
git pull origin/master
10、将代码托管到GitHub上
GitHub是全球最大的代码托管网站,主要是借助Git来进行版本控制。要先有一个GitHub账号才能用GitHub托管的功能
官方网站 https://github.com/
Start a project
点击复制版本库的地址,把远程版本库克隆岛本地
git clone https://github.com/cai784921129/OkHttp3Demo.git
可以进入OkHttp3Demo目录 可以用ls -al查看
我们需要把所有的文件复制粘贴到我们本地的工程中去
最终目录是这样的
git add .
然后再本地提交
git commit -m "my first commit."
最后提交内容到远程库
git push https://github.com/cai784921129/OkHttp3Demo.git master
然后输入 你的GitHub的账号密码及可以了
参考 第一行代码(第二版)-郭霖