Git入门教程_02_Git基本操作


       通过上一篇文章,我们已经对Git的基本原理有了一个大致的了解:通过将新的文件和修改进行快照并提交保存到Git目录中,Git就能够永久地记住和保管我们的文件。因此,Git最核心的操作就是管理文件的状态。当然,Git也提供了很多辅助性的操作,比如查看当前状态、查看文件差异、查看历史记录等等。
      以上这些操作,就是本文要讲述的内容,但是首先,我们必须获取一个Git仓库。


1,取得项目的Git仓库

      通常情况下有两种获得Git仓库的方式,一种是从自己已有的目录下创建新的Git仓库,一种是从已有的仓库中克隆出新的镜像仓库。
    1.1,从工作目录中新建仓库
         $ git init
         执行该命令后,当前工作目录下会出现一个名为.git的目录,这就是之前说的Git目录,它存储了所有Git需要的数据和资源。
         此时,我们还未将任何文件添加到Git的跟踪清单中。
    1.2,从已有仓库中克隆
         $ git clone [url] [name]
         执行该命令会在当前目录下创建一个以该项目名为名称的目录(如果指定了name,则为name),其中包含一个.git目录。
         然后从Git目录下提取出当前最新的版本的所有文件,作为当前的工作目录。也就是说,此时,当前工作目录下所有的文件都是被Git管理的。


2,记录每次更新(管理文件的状态)

    Git的记录更新操作,其核心就在于上一篇文章中所说的文件的4个状态和3个工作区域。所谓的记录更新就是将工作目录中:1,未跟踪的文件(新建的文件) 和 2,已修改的文件 生成快照,并保存到Git目录中去(这些快照通常要先经过暂存区域,但也可以不经过)。
    当然,必不可少的,我们也需要进行一些撤销的操作,比如将文件从暂存区中撤回,取消对文件的修改等。
    下面就来具体说说这些操作的实现。

   2.1,将文件快照送到暂存区:git add
        核心功能:
            1,将新文件(未跟踪)添加到跟踪清单中,并生成快照,保存到暂存区域中;
            2,将已修改的文件生成快照,保存到暂存区域中。
        基本用法:
            1,git add filename 将该文件添加到暂存区域,其中filename支持通配符。
            2,git add -A 将所有未跟踪的和已修改的文件(Git将忽略掉.gitignore文件中指定的文件,下文中会介绍)添加到暂存区域。

    2.2,提交暂存区中的快照到Git目录:git commit
        核心功能:
            1,将当前暂存区中的快照保存到Git目录中。注意:只是将暂存区中的快照保存,如果同一个文件在git add 之后,又做了修改,那么commit只会保存 git add 命令添加到暂存区中的快照,新的修改不会得到保存,该文件将处于已修改状态。
        基本用法:
            1,git commit 会进入当前终端默认的编辑器中编辑对本次提交的说明;可以使用git config --global core.editor命令设置使用什么编辑软件。
            2,git commit -m ‘提交说明’ 直接在字符串中对本次提交进行说明。
            3,git commit -a 不经过暂存区域,直接将所有以跟踪过的文件直接提交,而跳过 git add 步骤。

    2.3,撤销操作
        Git的操作虽然简单,但是撤销操作还是非常常用的。
        1,修改最后一次提交:git commit --amend
        有时候,我们提交完了才发现漏了几个文件,或是提交信息写错了,就可以用git commit --amend命令重新提交,该提交会覆盖掉此前的一次提交。
        2,取消已经暂存的文件:git reset HEAD <filename>
        有时候,我们错误的将一个文件加到了暂存区域,比如我们需要将两个文件分作两次提交,却一起送到了暂存区。此时,我们就需要将相关的文件从暂存区移除,git reset HEAD <filename> 命令就可以取消 filename 文件的暂存。
        3,取消对文件的修改:git checkout -- <filename>
        有时候,我们想要取消对某个文件的修改,这时候就可以用git checkout -- <filename> 命令。注意,这条命令是不可逆的!因为修改的内容从未提交过,因此对于Git而言,它就像没有存在过一样。


3,辅助性操作

      上文中我们介绍了Git下管理文件状态的3个核心操作,实际上,为了能够更好的管理文件状态,Git提供了一些能够辅助性的命令,接下来就一一介绍。

    3.1,忽略不想跟踪的文件:配置.gitignore文件
        核心功能:
            上文提到,可以通过 git add -A 命令将所有未跟踪的和已修改的文件添加到暂存区,但是工程下总有很多文件时不需要也不应该用Git跟踪的,比如IDE自动生成的文件,log文件,一些编译的中间结果,等等。此时,需要在 .gitignore 文件中进行配置,使这样的文件被忽略。
        基本格式:
            1,自动忽略空行,以及#开头的注释
            2,使用标准的glob模式匹配
               *匹配任意字符串;
               [abc]匹配方括号中的任意一个字符
               [a-f]匹配a到f范围内的任意字符
               ?匹配一个任意字符;
            3,匹配模式最后跟反斜杠(/)说明要忽略的是文件夹
            4,可以在指定模式的前面加上惊叹号(!)来取反,意为只保留指定模式


    3.2,查看文件状态:git status
        核心功能:
            1,显示当前是否存在:a,未跟踪的文件(Untracked files);b,已修改的文件(Changes not staged for commit);c,在暂存区中待提交的文件(Changes to be committed)。
            2,注意,一个文件可能同时出现在已修改的文件和暂存区的文件中,即当一个文件已经被git add添加到暂存区后又做了修改时,就会出现此情况。

    3.3,查看文件变化的内容:git diff
        核心功能:
            1,查看最近一次快照和当前还未暂存的文件之间的差异
            2,查看当前暂存的快照和上一次提交的快照之间的差异
        基本用法
            1,git diff 查看未暂存的变化
            2,git diff --cached 查看已暂存的变化

    3.4,查看提交的历史:git log
        核心功能:
            1,按照需求查看所有的提交的历史
        基本用法:
            1,Git提供了很多选项,基本有以下这些

       
       

4,文件管理命令

      Git中还提供了一些用来管理文件的命令,如删除文件和移动文件(重命名)等。
   
    4.1,移除文件:git rm
         核心功能:
             1,当要从Git目录中移除某个文件
             2,操作失误将原本不需要的文件添加到了跟踪清单中,想要将它们从中去掉
         基本用法:
             1,git rm filename:直接删除该文件,并从文件跟踪清单中移除
             2,git rm --cached filename:在工作目录中保留,但是从文件跟踪清单中删除。
         注意:
             如果只是普通地删除掉某个文件,并不会将它从Git的跟踪清单中去除。

    4.2,移动文件:git mv
         基本用法:
             1,git mv file_from file_to:移动文件

    以上就是 Git 中一些最常用最基本的操作,了解了这些操作就可以开始在本地管理自己的代码了!但是,如果需要对代码进行更好的备份和分享,或者想在团队成员之间进行协作,就离不开远程仓库,因此下一篇将会介绍一下远程仓库的使用。


参考:
Git官方教程: http://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80

猜你喜欢

转载自toilet22.iteye.com/blog/2159310