Git基本使用

Git简介

    Git是一个开源的分布式版本控制工具,用于有效、高速地处理从小到非常大的项目版本管理,Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    与集中式版本控制软件SVN相比,Git的分布式管理最大的区别在于它可以使开发者将代码提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

安装Git

由于Linux与Git是一个作者,所以Git在Linux上的安装最为简单,打开shell界面并输入:

sudo apt-get install git-core

在windows下的安装需要将安装包下载下来,下一步安装即可。网址:http://msysgit.github.io/

创建本地代码仓库

创建本地库就可以提交代码了,只需使用git add和git commit命令即可。add用于把想要提交的代码先添加进来,commit则是真正提交到本地代码库。例如我们想添加AndroidManifest.xml文件

git add AndroidManifest.xml

如果想将src文件夹添加

git add src

如果想把所以异动的文件添加进来则 git add .

提交代码:

git commit –m “Description Information”

注意在commit命令后面一定要通过参数 –m来提交描述信息,没有描述信息是不合法的。这样代码就提交到本地代码库了。

忽略文件

在一个项目中,我们进行了代码更新,编写了新代码或者改动一些代码,这时我们要将修改的代码提交到代码库中,进行版本控制。但是我们需要思考是否所有文件都需要版本管理?例如在安卓项目中,bin目录和gen目录是自动生成的,所以我们没有必要将这部分添加到版本控制中。否则可能会对文件的自动生成造成影响。那么我们如何实现这样的效果呢?

Git提供了一种可配性很强的机制来允许用户将制定的文件或目录排除在版本控制之外。它会检查代码仓库的根目录下是否存在一个名为.gitignore的文件。如果存在就去读取这个文件的内容,并把每一行指定的文件或目录排除在版本控制之外,该文件是可以用”*”通配符匹配的。

一般情况下,如果我们就从Github中创建仓库,在创建时会让我们选择不同项目的.gitignore文件添加到仓库中,这些文件会针对项目中不需要版本控制文件来排除。不需要我们手动编写。例如,安卓项目.gitignore文件如下:

查看修改内容

在进行了一次代码提交后,我们后面会对项目不断地进行维护,添加新功能。比较的理想的情况是每当完成一下快功能,就执行一次提交,但是某个功能牵扯到了代码比较多,可能会忘记。Git会记录自上一次提交后所有的文件修改,以供我们查看。

在项目的根目录下执行:

git status

Git会将自上次提交后所有修改过的文件列出来。

执行如下命令,Git会将所有文件的更改内容列出来

git diff

也可以在命令后加上文件名,来查看该文件更改内容

git diff src/example/demo.xml

撤回更改

在查看到更改内容后,如果需要撤销这项更改,可以使用checkout命令

git checkout . 撤销所有文件的更改

git checkout src/example/demo.xml 撤销该文件的更改

这种方法只适用于还没有执行过add命令的文件,如果某个文件已经添加过了,这种方法就无法撤销其更改的内容。

对于已添加的文件(add),我们应该先对其取消添加,然后再使用checkout命令撤销更改。取消添加使用reset命令。如下:

git reset HEAD src/example/demo.xml

查看提交记录

我们可以使用log命令来查看每一次提交,每次提交的提交Id、提交人、提交日期以及提交描述都会呈现给我们。命令如下:

git log

同时,我们可以更加提交Id,使用reset命令来将代码恢复至该次提交的代码状态,如下:

git reset --head log号

分支的用法

分支是版本控制工具中比较重要的一个概念,它的主要作用就是在现有代码的基础上开辟一个分叉口,使得代码可以再主干线和分支线上同时开发,互不影响。举一个例子来论述分支的作用。

开发一款软件到version1.0版本后。交付用户使用。继续开发version1.1,在1.1开发到中期时,用户反馈1.0版本有许多bug需要立刻修改。如果我们在现有代码的基础上修复bug。那么更新的1.0版本会带有一半的1.1版本的功能。而此时如果恢复版本到1.0。那么1.1开发的代码就会抹掉。

如果使用分支,在发布1.0时建立一个分支。该分支保存1.0的代码。然后在主干线上继续开发1.1版本的功能。当1.0版本发现bug时,在分支上修改。这样就不会影响1.1版本开发的同时快速更新1.0版本。然后将修改后的代码合到主干线上,这样在主干线中也修复了这些bug。当1.1版本发布时,同样的Bug就不会存在了。

下面介绍一些分支相关的命令及其用法

查看分支

git branch

效果:

其中标记颜色且前面有星号的是当前处于的分支

新建分支:

git branch 分支名 如:git branch version1.1

新建分支后可以使用git branch命令查看分支以确定分支是否新建成功

切换分支:

git checkout 分支名 如:git chekout version 1.1

切换分支后可以使用git branch命令查看分支以确定是否切换成功

删除分支:

首先如果要删除的分支是当前分支,则不能删除。所以要先切换到其他分支再删除,命令如下:

git branch –D 分支名 如 git branch –D version1.0

将新分支发布在Github上:

git push origin 分支名 如:git push origin version1.0

此时需要输入用户名及密码

删除远程分支:

git push origin:分支名 如git push origin version1.0 (分支名前的冒号代表删除)

代码暂存

在上传代码前,我们需要检查下本地开发的代码与远程库上是否有冲突,例如A昨天提交代码修改了文件LoginPrestener.java文件,而本地开发时也修改了LoginPrestener.java文件。那么我们需要做的事情如下

1、缓存本地代码,将代码恢复至上次提交后的状态(本地代码有修改的状态下是无法git pull的)

2、git pull更新本地代码(更新LoginPrestener.java)

3、释放本地开发的代码,若释放后LoginPrestener.java文件存在冲突,例如你与其他开发人员均修改了第78行,那么久需要手动处理冲突

下面我们学习下缓存本地代码命令

git stash 快捷缓存

git stash pop 快捷释放缓存

=======

git stash save "123" 带标记的缓存

git stash list 查看所有缓存,此时,会列出所有缓存,每一个带标记的缓存会有一个id,该id在释放缓存时会用到

git stash apply stash@{0} 释放标记id为0的缓存

注意,缓存时可以跨分支的,例如你在version1.1上进行开发。此时项目组从version1.0中拉出了version1.2,并告知本期开发要在1.2上做,那么你就需要将你在1.1中开发的代码移到1.2上。步骤如下:

git stash save "develop in 1.1" 缓存代码

git checkout version1.2 切换到分支1.2

git stash list 查看缓存列表,找到标记为develop in 1.1的id,假如为1

git stash apply stash@{1} 释放缓存,注意,此时分支已经是在1.2上,这样代码就移到了分支1.2上

将代码托管至Github上

概述:GitHub是全球最大的代码托管网站,主要借助Git来进行版本控制,以零成本的代价进行代码托管。Github官网地址:http://github.com/。

首先要注册、登录,这里就不赘述了。接下来会让你选择收费计划。收费计划有创建私人版本的权限。我们选择免费计划就可以了。

接下来我们可以点击右下角的New repository按钮来创建代码仓库,如图:

接下来命名代码仓库,然后添加.gitignore文件,这里我们以Android项目为例,所以选择添加一个Android项目类型的.gitignore文件。并使用Apache V2 License作为开源协议。点击Create repository。创建成功。如图:

 

代码库地址如图所示,可以看到,Github已经帮我们创建了.gitignore、LICENSE和README.md这三个文件。其中编辑README.md文件可以修改主页描述。

下一步,我们需要在本地创建项目,以项目Notes为例。在Esclipse中创建项目后,我们需要将远程版本克隆到本地。打开Git命令行,进入到项目目录下,输入命令:

git clone 远程地址 如 git clone http://github.com/xxx/xxx

命令行会提示 Checking connectivity …done,表示克隆成功。可以看到在工程目录Notes下多了一个文件夹Notes,ls查看文件发现里面有.git文件夹以及/.gitgnore等文件,这就是从远程克隆到本地的代码版本,我们需要将这些文件复制到上一层级目录中,也就是Notes中,复制时注意.git文件夹是隐藏文件夹,不要漏掉,然后将/Notes/Notes删掉。这样在原先的工程目录中就多了.git文件夹等远程版本文件。

下一步我们需要将Notes现有的文件提交到Github上面,这样就很简单了。命令如下:

git add . 添加所有变更文件

git commit –m “update code” 提交到本地代码库

git push origin master 将代码同步到远程版本库,提交分支为master主分支。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值