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的账号密码及可以了

 

参考 第一行代码(第二版)-郭霖