Git的基本使用

来源:互联网 发布:淘宝彩妆店铺介绍 编辑:程序博客网 时间:2024/06/08 12:26

Git的基本使用

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

安装

linux或mac os:

sudo apt-get install git-core

windows:

http://msysgit.github.io/

使用

windows版本的git是有Git gui和Git bash两种方式使用,这里只介绍Git bash的使用方式,因为这种方式在其它两个操作系统都是通用的。

配置用户和邮箱

首先要配置用户名和邮箱,这样就知道是谁提交了,在linux下直接打开shell界面输入,windows下要打开Git bash后输入。命令如下所示:

git config --global user.name "Yep"git config --global user.email "yepeng2016@outlook.com"

置完成后你还可以使用同样的命令来查看是否配置成功,只需要将最后的名字和邮箱
地址去掉即可,如图所示:
这里写图片描述

创建代码仓库

首先进入到项目目录,然后在目录中输入如下命令:

git init

很简单吧!只需要一行命令就可以完成创建代码仓库的操作,如图所示:
这里写图片描述

通过 ls -al 命令可以查看目录中创建了一个隐藏文件夹.git,如图所示:
这里写图片描述

如果你删除本地仓库,只需要删除.git文件夹即可。

提交本地代码

码仓库建立完之后就可以提交代码了,其实提交代码的方法也非常简单,只需要使用add 和commit 命令就可以了。add 是用于把想要提交的代码先添加进来,而commit 则是真正地去执行提交操作。比如我想添加src文件夹,就可以输入如下命令:

git add src

可是这样一个个地添加感觉还是有些复杂,有没有什么办法可以一次性就把所有的文件都添加好呢?当然可以,只需要在add 的后面加上一个点,就表示添加所有的文件了,命令
如下所示:

git add .

现在项目的文件都添加好了,我们可以提交一下了,输入如下命令:

git commit -m "First commit."

如图所示:
这里写图片描述

注意在commit 命令的后面我们一定要通过-m 参数来加上提交的描述信息,没有描述信息的提交被认为是不合法的。这样所有的代码就已经成功提交了

忽略文件

用过svn的同学都知道,一般提交项目都不是提交整个项目的文件,bin 目录和gen 目录下的文件都是会自动生成的,我们不应该将这部分文件添加到版本控制当中,否则有可能会对文件的自动生成造成影响,那么如何才能实现这样的效果呢?

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

现在,我们在项目的根目录下创建一个名为.gitignore 的文件,然后编辑这个文件中的内容,首先输入命令vi .gitignore按回车后如图所示:
这里写图片描述

这样就表示把bin 目录和gen 目录下的所有文件都忽略掉,从而使用得它们不会加入到版本控制当中。
排除了bin 和gen 这两个目录以后,我们就可以提交代码了,先使用add 命令将所有的文件进行添加,如下所示:

git add .

然后执行commit 命令完成提交,如下所示:

git commit -m "First commit."

查看修改内容

查看文件修改情况的方法非常简单,只需要使用status 命令就可以了,在项目的根目录下输入如下命令:
git status
然后Git 会提示目前项目中没有任何可提交的文件,因为我们刚刚才提交过嘛。现在对项目中的代码稍做一下改动。
原代码:

package test;public class test {    public static void main(String args[])    {        System.out.print("Hello");    }}

修改代码:

package test;public class test {    public static void main(String args[])    {        System.out.print("Hello world");    }}

这里仅仅是修改了输出的内容,修改完后重新输入git status命令,如图所示
这里写图片描述
可以看到,Git 提醒我们test.java 这个文件已经发生了更改,那么如何才能看到更改的内容呢?这就需要借助diff 命令了,用法如下所示:

git diff

这样可以查看到所有文件的更改内容,如果你只想查看test.java 这个文件的更改内容,可以使用如下命令:
git diff src/test/test.java
命令结果如下图所示:
这里写图片描述
其中,减号代表删除的部分,加号代表添加的部分。从图中我们就可以明显地看出,输出的内容从“Hello”变成了“Hello world”。

撤销未提交的修改

有的时候我们代码可能会写得过于草率,以至于原本正常的功能,结果反倒被我们改出了问题。遇到这种情况时也不用着急,因为只要代码还未提交,所有修改的内容都是可以撤销的。
比如我们想撤销上面的修改,可以执行命令:

git checkout src/test/test.java

执行了这个命令之后,我们对test.java 这个文件所做的一切修改就应该都被撤销了。重新运行git status 命令检查一下,结果如图所示:
这里写图片描述

可以看到,当前项目中没有任何可提交的文件,说明撤销操作确实是成功了。不过这种撤销方式只适用于那些还没有执行过add 命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销其更改的内容,这种情况应该怎么办?对于已经添加的文件我们应该先对其取消添加,然后才可以撤回提交,取消添加使用reset命令,如下所示:
这里写图片描述
然后再运行一遍git status 命令,你就会发现test.java 这个文件重新变回了未添加状态,此时就可以使用checkout 命令来将修改的内容进行撤销了。

查看提交记录

可以使用log 命令查看历史提交信息,用法如下所示:

git log

结果如图所示:
这里写图片描述

提交记录非常多的时候,如果我们只想查看其中一条记录,可以在命令中指定该记录的id,并加上-1 参数表示我们只想看到一行记录,如下所示:
这里写图片描述

分支的用法

分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。分支的工作原理示意图如图所示。
这里写图片描述

如果想要查看当前的版本库当中有哪些分支,可以使用git branch –a 这个命令,如图所示:
这里写图片描述

由于目前项目中还没有创建过任何分支,因此只有一个master 分支存在,这也就是前面所说的主干线。接下来我们尝试去创建一个分支,命令如下:

git branch version1.0

命令结果如图所示:
这里写图片描述

可以看到,果然有一个叫作version1.0 的分支出现了。你会发现,master 分支的前面有一个*号,说明目前我们的代码还是在master 分支上的,那么怎样才能切换到version1.0 这个分支上呢?其实也很简单,只需要使用checkout 命令即可,如下所示:

git checkout version1.0

再次输入git branch –a 来进行检查,结果如图所示。
这里写图片描述

可以看到,我们已经把代码成功切换到version1.0 这个分支上了。需要注意的是,在version1.0 分支上修改并提交的代码将不会影响到master 分支。同样的道理,在master 分支上修改并提交的代码也不会影响到version1.0 分支。因此,如果我们在version1.0 分支上修复了一个bug,在master 分支上这个bug 仍然是存在的。这时将修改的代码一行行复制到master 分支上显然不是一种聪明的做法,最好的办法就是使用merge命令来完成合并操作,如下所示:

git checkout mastergit merge version1.0

仅仅这样简单的两行命令,就可以把在version1.0 分支上修改并提交的内容合并到master 分支上了。当然,在合并分支的时候还有可能出现代码冲突的情况,这个时候你就需要静下心来慢慢地找出并解决这些冲突,Git 在这里就无法帮助你了。最后,当我们不再需要version1.0 这个分支的时候,可以使用如下命令将这个分支删除掉:

git branch -D version1.0

与远程版本库协作

那么如何使用Git 来进行团队合作开发呢?这就需要有一个远程的版本库,团队的每个成员都从这个版本库中获取到最原始的代码,然后各自进行开发,并且以后每次提交的代码都同步到远程版本库上就可以了。另外,团队中的每个成员最好都要养成经常从版本库中获取最新代码的习惯,不然的话,大家的代码就很有可能经常出现冲突。比如说现在有一个远程版本库的Git 地址是https://github.com/exmaple/test.git,就可以使用如下的命令将代码下载到本地:

git clone https://github.com/exmaple/test.git

之后你在这份代码的基础进行了一些修改和提交,那么怎样才能把本地修改的内容同步到远程版本库上呢?这就需要借助push 命令来完成了,用法如下所示:

git push origin master

其中origin 部分指定的是远程版本库的Git 地址,master 部分指定的是同步到哪一个分支上,上述命令就完成了将本地代码同步到https://github.com/exmaple/test.git 这个版本库的master 分支上的功能。
知道了将本地的修改同步到远程版本库上的方法,接下来我们看一下如何将远程版本库上的修改同步到地。Git 提供了两种命令来完成此功能,分别是fetch 和pull,fetch 的语法规则和push 是差不多的,如下所示:

git fetch origin master

执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会
合并到任何分支上去,而是会存放在到一个origin/master 分支上,这时我们可以通过diff 命
令来查看远程版本库上到底修改了哪些东西:

git diff origin/master

之后再调用merge 命令将origin/master 分支上的修改合并到主分支上即可,如下所示:

git merge origin/master

而pull 命令则是相当于将fetch 和merge 这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,用法如下所示:

git pull origin master
0 0
原创粉丝点击