Git初学记录

1、什么是Git?

   Git 是 Linux 发明者 Linus 开发的一款新时代的版本控制系统,那什么是版本控制系统呢?举几个简单的例子:

    

熟悉编程的知道,我们在软件开发中源代码其实是最重要的,那么对源代码的管理变得异常重要:

 

  比如为了防止代码的丢失,肯定本地机器与远程服务器都要存放一份,而且还需要有一套机制让本地可以跟远程同步;

 

  又比如我们经常是好几个人做同一个项目,都要对一份代码做更改,这个时候需要大家互不影响,又需要各自可以同步别人的代码;

 

  又比如我们开发的时候免不了有bug,有时候刚发布的功能就出现了严重的bug,这个时候需要紧急对代码进行还原;

 

  又比如随着我们版本迭代的功能越来越多,但是我们需要清楚的知道历史每一个版本的代码更改记录,甚至知道每个人历史提交代码的情况;

 

  等等等类似以上的情况,这些都是版本控制系统能解决的问题。所以说,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,对于软件开发领域来说版本控制是最重要的一环,而 Git 毫无疑问是当下最流行、最好用的版本控制系统。

 

2、Git安装

  

   上面说了,Git 是一个版本控制系统,你也可以理解成是一个工具,跟 Java 类似,使用之前必须得先下载安装,所以第一步必须要安装,我用的是 Mac , Mac 上其实系统自带 Git 的,不过这里统一提供一下各平台的安装方式,这部分就不过多介绍,相信大家这里搞的定。

 

    Mac:https://sourceforge.net/projects/git-osx-installer/

    Windows:https://git-for-windows.github.io/

    Linux:apt-get install git

 

3、如何学习 Git ?

  安装好Git之后,怎么学习git的使用是个问题,虽然目前网上有很多图形化的git软件可以使用,但是我强烈建议初学者最好从命令行的使用开始,切勿急功近利,只有从命令行一步一步慢慢学起,你才会明白、理解git每一步的实际操作意义,等你完全熟悉之后,再转用图形化界面工具即可,当然很可能那个时候的你反而对图形化应用会产生抵触心理的。

 

4、Git命令

  第一步:测试下Git是否安装成功,进入dos窗口,输入【git】命令,弹出如下提示即为安装成功。

 

  第二步:建立一个测试项目test。

    ① 新建一个文件夹,在该文件夹中新建一个文件(我的是Windows系统,直接手动建的,其他系统自己根据实际情况建吧)

      

    友情提醒:在进行任何 Git 操作之前,都要先切换到 Git 仓库目录,也就是先要先切换到项目的文件夹目录下。

 

    ② 进入新建的Git仓库目录(也就是上面建的test目录)之后,先随便输入一个命令【git status】,可以看到如下提示:

    

    大概意思就是:当前目录还不是一个Git仓库(git repository)

 

    ③ 既然不是一个Git仓库(git repository),那么我们就要初始化git仓库,初始化的命令为:【git init】,输入之后会提示:

    

    初始化成功之后,in后面显示的就是你git仓库本地路径,test也就成了一个git仓库(git repository),这个时候你可以再试下上面的【git status】命令,输入后会提示如下信息:

    

    主要提示的是: a.md 文件 Untracked files ,就是说 a.md 这个文件还没有被跟踪,还没有提交在 git 仓库里呢,而且提示你可以使用 git add <file> 去操作你想要提交的文件。

     【git status】命令的意思是:查询当前git项目的状态信息,没事可以多用这个命令随时看看你当前git仓库(git repository)的状态。

 

    ④ 【git add】命令的使用

      上面我们最后查看的git status,提示a.md文件还没有提交到git仓库(git repository)里,这时我们可以随便编辑下a.md文件,然后使用【git add a.md】命令,把编辑修改之后的a.md文件提交的git仓库(git repository),之后再用【git status】查看下当前git仓库(git repository)的状态。

    

  此时提示以下文件 Changes to be committed , 意思就是 a.md 文件等待被提交,当然你可以使用 git rm --cached 这个命令去移除这个缓存。

 

    ⑤ 【git commit】,由上一步我们看到的git仓库中当前的状态是:a.md文件显示的等待被提交,提交不就是commit么,所以我们输入【git commit -m “first commit amd”】

 其中,commit的意思是提交,-m的意思是提交信息,引号中的相当于本次提交的备注内容,执行了以上命令之后就表示我们已经正式进行了一次提交。(执行commit之前,需要确认登陆git账号,如果没有,提交时会提示如下信息:)

    

  提示信息大概意思为:配置自己git的用户,邮箱等信息。配置丰富如下:

    git config user.email "这个是邮箱"

    git config user.name "你的名字"
    

  配置完毕之后再进行上面的commit即可。执行commit后提示信息大概如下:

    

  提交完毕之后,这时我们再执行【git status】查询下状态:

    

    提示 nothing to commit,大概意思是,没啥可提交的了。

    ⑥ 【git log】该命令可以查看历史所有的commit记录,所以我们可以看到之前我们提交的那次的commit记录,如下:

    

    Author:是你之前配置的用户信息,Date是你Commit的具体时间,下面的first commit amd 就是在提交的时候-m后面引号中的内容,我把它叫做【备注信息】,大概就这个意思。

    看到这里,这会肯定会有人有疑问,我直接提交为什么还要先add然后再commit,不能直接commit吗?

    起初呢我也有这个疑问,后来才知道:首先git add是先把改动的内容保存到一个暂存区,可以理解为一个缓存区,临时存放改动信息,之后的git commit才是真正的提交,这样做的好处就是可以避免误提交。

 

    ⑦【git branch】分支:

      

  branch 即分支的意思,分支的概念很重要,尤其是团队协作的时候,假设两个人都在做同一个项目,这个时候分支就是保证两人能协同合作的最大利器了。举个例子,A, B俩人都在做同一个项目,但是不同的模块,这个时候A新建了一个分支叫a, B新建了一个分支叫b,这样A、B做的所有代码改动都各自在各自的分支,互不影响,等到俩人都把各自的模块都做完了,最后再统一把分支合并起来。

   

  执行 git init 初始化git仓库之后会默认生成一个主分支 master ,也是你所在的默认分支,也基本是实际开发正式环境下的分支,一般情况下 master 分支不会轻易直接在上面操作的,你们可以输入 git branch 查看下当前分支情况:

   

  如果我们想在此基础上新建一个分支呢,很简单,执行 git branch a 就新建了一个名字叫 a 的分支,这时候分支 a 跟分支 master 是一模一样的内容,我们再输入 git branch 查看的当前分支情况:

  

  

  但是可以看到 master 分支前有个 * 号,即虽然新建了一个 a 的分支,但是当前所在的分支还是在 master 上,如果我们想在 a 分支上进行开发,首先要先切换到 a 分支上才行,所以下一步要切换分支

 

   【git checkout a】

 

执行这个命令,然后再输入 git branch 查看下分支情况:

  

  这个时候就可以看到当前我们在的分支已经是a了,这个时候 A 同学就可以尽情的在他新建的a分支去进行代码改动了。

 

  那有人就说了,我要先新建再切换,未免有点麻烦,有没有一步到位的,聪明:

 

  【git checkout -b b】

  这个命令的意思就是新建一个b分支,并且自动切换到b分支。如下:

  

    

     ⑧【git merge】合并:

      A同学在a分支代码写的不亦乐乎,终于他的功能完工了,并且测试也都ok了,准备要上线了,这个时候就需要把他的代码合并到主分支master上来,然后发布。git merge 就是合并分支用到的命令,针对这个情况,需要先做两步,第一步是切换到 master 分支(git checkout master),如果你已经在了就不用切换了,第二步执行 git merge a ,意思就是把a分支的代码合并过来,不出意外,这个时候a分支的代码就顺利合并到 master 分支来了。为什么说不出意外呢?因为这个时候可能会有冲突而合并失败,留个包袱,这个到后面进阶的时候再讲。     

    git branch -d

    有新建分支,那肯定有删除分支,假如这个分支新建错了,或者a分支的代码已经顺利合并到 master 分支来了,那么a分支没用了,需要删除,这个时候执行 git branch -d a 就可以把a分支删除了。

 

    git branch -D

    有些时候可能会删除失败,比如如果a分支的代码还没有合并到master,你执行 git branch -d a 是删除不了的,它会智能的提示你a分支还有未合并的代码,但是如果你非要删除,那就执行 git branch -D a 就可以强制删除a分支。

 

    ⑨【git tag】标签:

    

     我们在客户端开发的时候经常有版本的概念,比如v1.0、v1.1之类的,不同的版本肯定对应不同的代码,所以我一般要给我们的代码加上标签,这样假设v1.1版本出了一个新bug,但是又不晓得v1.0是不是有这个bug,有了标签就可以顺利切换到v1.0的代码,重新打个包测试了。

     所以如果想要新建一个标签很简单,比如 git tag v1.0 就代表我在当前代码状态下新建了一个v1.0的标签,输入 git tag 可以查看历史 tag 记录。

     

    

    

    可以看到我新建了两个标签 v1.0、v1.1。

 

想要切换到某个tag怎么办?也很简单,执行 git checkout v1.0 ,这样就顺利的切换到 v1.0 tag的代码状态了。

 

OK,以上全是一些最基本的Git操作,而且全是在本地环境进行操作的,完全没有涉及到远程仓库,下一章节将以远程 GitHub 仓库为例,讲解下本地如何跟远程仓库一起同步协作,另外今天讲的全是最基础最简单的Git操作,一步步来,后续再继续讲解一下Git的高阶以及一些Git的酷炫操作。

  

 

 

   

 

posted @ 2016-08-03 14:26  sunkejava  阅读(228)  评论(0编辑  收藏  举报