[size=small] 通过上一篇文章,我们已经对Git的基本原理有了一个大致的了解:通过将新的文件和修改进行快照并提交保存到Git目录中,Git就能够永久地记住和保管我们的文件。因此,Git最核心的操作就是管理文件的状态。当然,Git也提供了很多辅助性的操作,比如查看当前状态、查看文件差异、查看历史记录等等。
以上这些操作,就是本文要讲述的内容,但是首先,我们必须获取一个Git仓库。[/size]
[size=medium][b]1,取得项目的Git仓库[/b][/size]
[size=small] 通常情况下有两种获得Git仓库的方式,一种是从自己已有的目录下创建新的Git仓库,一种是从已有的仓库中克隆出新的镜像仓库。
[b]1.1,从工作目录中新建仓库[/b]
$ git init
执行该命令后,当前工作目录下会出现一个名为.git的目录,这就是之前说的Git目录,它存储了所有Git需要的数据和资源。
此时,我们还未将任何文件添加到Git的跟踪清单中。
[b]1.2,从已有仓库中克隆[/b]
$ git clone [url] [name]
执行该命令会在当前目录下创建一个以该项目名为名称的目录(如果指定了name,则为name),其中包含一个.git目录。
然后从Git目录下提取出当前最新的版本的所有文件,作为当前的工作目录。也就是说,此时,当前工作目录下所有的文件都是被Git管理的。
[/size]
[size=medium][b]2,记录每次更新(管理文件的状态)[/b][/size]
[size=small] Git的记录更新操作,其核心就在于上一篇文章中所说的文件的4个状态和3个工作区域。所谓的记录更新就是将工作目录中:1,未跟踪的文件(新建的文件) 和 2,已修改的文件 生成快照,并保存到Git目录中去(这些快照通常要先经过暂存区域,但也可以不经过)。
当然,必不可少的,我们也需要进行一些撤销的操作,比如将文件从暂存区中撤回,取消对文件的修改等。
下面就来具体说说这些操作的实现。
[b] 2.1,将文件快照送到暂存区:git add[/b]
核心功能:
1,将新文件(未跟踪)添加到跟踪清单中,并生成快照,保存到暂存区域中;
2,将已修改的文件生成快照,保存到暂存区域中。
基本用法:
1,git add filename 将该文件添加到暂存区域,其中filename支持通配符。
2,git add -A 将所有未跟踪的和已修改的文件(Git将忽略掉.gitignore文件中指定的文件,下文中会介绍)添加到暂存区域。
[b]2.2,提交暂存区中的快照到Git目录:git commit[/b]
核心功能:
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 步骤。
[b]2.3,撤销操作[/b]
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而言,它就像没有存在过一样。
[/size]
[size=medium][b]3,辅助性操作[/b][/size]
[size=small] 上文中我们介绍了Git下管理文件状态的3个核心操作,实际上,为了能够更好的管理文件状态,Git提供了一些能够辅助性的命令,接下来就一一介绍。
[b]3.1,忽略不想跟踪的文件:配置.gitignore文件[/b]
核心功能:
上文提到,可以通过 git add -A 命令将所有未跟踪的和已修改的文件添加到暂存区,但是工程下总有很多文件时不需要也不应该用Git跟踪的,比如IDE自动生成的文件,log文件,一些编译的中间结果,等等。此时,需要在 .gitignore 文件中进行配置,使这样的文件被忽略。
基本格式:
1,自动忽略空行,以及#开头的注释
2,使用标准的glob模式匹配
*匹配任意字符串;
[abc]匹配方括号中的任意一个字符
[a-f]匹配a到f范围内的任意字符
?匹配一个任意字符;
3,匹配模式最后跟反斜杠(/)说明要忽略的是文件夹
4,可以在指定模式的前面加上惊叹号(!)来取反,意为只保留指定模式
[b]3.2,查看文件状态:git status[/b]
核心功能:
1,显示当前是否存在:a,未跟踪的文件(Untracked files);b,已修改的文件(Changes not staged for commit);c,在暂存区中待提交的文件(Changes to be committed)。
2,注意,一个文件可能同时出现在已修改的文件和暂存区的文件中,即当一个文件已经被git add添加到暂存区后又做了修改时,就会出现此情况。
[b]3.3,查看文件变化的内容:git diff[/b]
核心功能:
1,查看最近一次快照和当前还未暂存的文件之间的差异
2,查看当前暂存的快照和上一次提交的快照之间的差异
基本用法
1,git diff 查看未暂存的变化
2,git diff --cached 查看已暂存的变化
[b]3.4,查看提交的历史:git log[/b]
核心功能:
1,按照需求查看所有的提交的历史
基本用法:
1,Git提供了很多选项,基本有以下这些[/size]
[img]http://dl2.iteye.com/upload/attachment/0103/5260/58242610-7f3f-3109-bd7f-d28bb21f698b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0103/5262/2349d384-0d10-3f76-aa63-9508855ec2b3.png[/img]
[size=medium][b]4,文件管理命令[/b][/size]
[size=small] 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 中一些最常用最基本的操作,了解了这些操作就可以开始在本地管理自己的代码了!但是,如果需要对代码进行更好的备份和分享,或者想在团队成员之间进行协作,就离不开远程仓库,因此下一篇将会介绍一下远程仓库的使用。[/size]
参考:
Git官方教程:[url]http://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80[/url]
以上这些操作,就是本文要讲述的内容,但是首先,我们必须获取一个Git仓库。[/size]
[size=medium][b]1,取得项目的Git仓库[/b][/size]
[size=small] 通常情况下有两种获得Git仓库的方式,一种是从自己已有的目录下创建新的Git仓库,一种是从已有的仓库中克隆出新的镜像仓库。
[b]1.1,从工作目录中新建仓库[/b]
$ git init
执行该命令后,当前工作目录下会出现一个名为.git的目录,这就是之前说的Git目录,它存储了所有Git需要的数据和资源。
此时,我们还未将任何文件添加到Git的跟踪清单中。
[b]1.2,从已有仓库中克隆[/b]
$ git clone [url] [name]
执行该命令会在当前目录下创建一个以该项目名为名称的目录(如果指定了name,则为name),其中包含一个.git目录。
然后从Git目录下提取出当前最新的版本的所有文件,作为当前的工作目录。也就是说,此时,当前工作目录下所有的文件都是被Git管理的。
[/size]
[size=medium][b]2,记录每次更新(管理文件的状态)[/b][/size]
[size=small] Git的记录更新操作,其核心就在于上一篇文章中所说的文件的4个状态和3个工作区域。所谓的记录更新就是将工作目录中:1,未跟踪的文件(新建的文件) 和 2,已修改的文件 生成快照,并保存到Git目录中去(这些快照通常要先经过暂存区域,但也可以不经过)。
当然,必不可少的,我们也需要进行一些撤销的操作,比如将文件从暂存区中撤回,取消对文件的修改等。
下面就来具体说说这些操作的实现。
[b] 2.1,将文件快照送到暂存区:git add[/b]
核心功能:
1,将新文件(未跟踪)添加到跟踪清单中,并生成快照,保存到暂存区域中;
2,将已修改的文件生成快照,保存到暂存区域中。
基本用法:
1,git add filename 将该文件添加到暂存区域,其中filename支持通配符。
2,git add -A 将所有未跟踪的和已修改的文件(Git将忽略掉.gitignore文件中指定的文件,下文中会介绍)添加到暂存区域。
[b]2.2,提交暂存区中的快照到Git目录:git commit[/b]
核心功能:
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 步骤。
[b]2.3,撤销操作[/b]
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而言,它就像没有存在过一样。
[/size]
[size=medium][b]3,辅助性操作[/b][/size]
[size=small] 上文中我们介绍了Git下管理文件状态的3个核心操作,实际上,为了能够更好的管理文件状态,Git提供了一些能够辅助性的命令,接下来就一一介绍。
[b]3.1,忽略不想跟踪的文件:配置.gitignore文件[/b]
核心功能:
上文提到,可以通过 git add -A 命令将所有未跟踪的和已修改的文件添加到暂存区,但是工程下总有很多文件时不需要也不应该用Git跟踪的,比如IDE自动生成的文件,log文件,一些编译的中间结果,等等。此时,需要在 .gitignore 文件中进行配置,使这样的文件被忽略。
基本格式:
1,自动忽略空行,以及#开头的注释
2,使用标准的glob模式匹配
*匹配任意字符串;
[abc]匹配方括号中的任意一个字符
[a-f]匹配a到f范围内的任意字符
?匹配一个任意字符;
3,匹配模式最后跟反斜杠(/)说明要忽略的是文件夹
4,可以在指定模式的前面加上惊叹号(!)来取反,意为只保留指定模式
[b]3.2,查看文件状态:git status[/b]
核心功能:
1,显示当前是否存在:a,未跟踪的文件(Untracked files);b,已修改的文件(Changes not staged for commit);c,在暂存区中待提交的文件(Changes to be committed)。
2,注意,一个文件可能同时出现在已修改的文件和暂存区的文件中,即当一个文件已经被git add添加到暂存区后又做了修改时,就会出现此情况。
[b]3.3,查看文件变化的内容:git diff[/b]
核心功能:
1,查看最近一次快照和当前还未暂存的文件之间的差异
2,查看当前暂存的快照和上一次提交的快照之间的差异
基本用法
1,git diff 查看未暂存的变化
2,git diff --cached 查看已暂存的变化
[b]3.4,查看提交的历史:git log[/b]
核心功能:
1,按照需求查看所有的提交的历史
基本用法:
1,Git提供了很多选项,基本有以下这些[/size]
[img]http://dl2.iteye.com/upload/attachment/0103/5260/58242610-7f3f-3109-bd7f-d28bb21f698b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0103/5262/2349d384-0d10-3f76-aa63-9508855ec2b3.png[/img]
[size=medium][b]4,文件管理命令[/b][/size]
[size=small] 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 中一些最常用最基本的操作,了解了这些操作就可以开始在本地管理自己的代码了!但是,如果需要对代码进行更好的备份和分享,或者想在团队成员之间进行协作,就离不开远程仓库,因此下一篇将会介绍一下远程仓库的使用。[/size]
参考:
Git官方教程:[url]http://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80[/url]