Git | Git 操作整理 - 基础篇
0. 前言
这是程序锅对之前学习和使用 Git 做的一份整理,后头继续使用和学习 Git 的话,还会更新这份内容,所以喜欢的话可以关注一波【多选参数】哦,会第一时间在【多选参数】发布的。因此,这份就算是 v1.0 版本的吧。另外,附上了本篇内容的提纲,后头还会有几篇关于 Git 的,每篇都有这样的一份提纲。
1. Git 的三个区域
在正式 git 之前,我们先来了解一下 git 的 3 个区域,分别是工作目录、暂存区、版本历史。这个知识点是尤为重要的,在理解了这三个区域之后,git 的操作才会显得很容易。
工作目录是直接跟文件相关的,比如被 git 管理起来的文件被修改了的话,在使用
git status
命令查看的时候会显示出来。显示的内容就是相比之前的版本 A 变更了的哪些文件;当使用
git add
命令之后,文件修改的东西就被提交到暂存区了,而工作目录中版本是变化之后了的,比如版本 B。那么使用git status
之后,暂存区显示的内容是相对版本 A 的变化的文件信息,也相当于是版本 B 的情况;当使用
git commit
之后,这个更改就被提交到了版本历史中,那么版本历史就从版本 A 变到了版本 B;
2. Git 基础使用
2.1. Git 配置相关
在使用 Git 管理文件系统的时候,需要进行一些配置,比如用户信息的配置。 Git 管理文件系统主要分为三个层次,如下所示(PS:只输入下面这些命令是不行的)
优先级 local > global > system,也就是说当对一个仓库同时设置了 global 和 local 那么采用local配置的信息。
查看配置信息
有些时候我们也会查看 Git 配置信息等,使用如下命令可以查看相应层次的配置信息
配置信息---以用户信息为例
Git 相对于其他版本控制系统需要这些信息,是因为在版本控制中,做出的修改是跟这些用户信息捆绑在一起的。绑定的 email 是为了,当评审人员对代码提出了相应的修改,那么 Git 管理系统会对修改代码的提交者绑定的 email 发送邮件。所以email 需要是一个有效的 email,能收的到邮件的 email。
清除配置信息
2.2. 建立 Git 仓库
把已有的项目代码纳入 Git 管理
新建的项目直接用Git管理
2.3. 仓库管理常用命令
git add
主要是把新文件或者文件变动的情况添加到暂存区
> 暂存区的文件也是相当于被 git 管理了的。
git status
可以查看工作目录和暂存区的状态
> Tips:假如 bash 有颜色显示的话,会看到红色是代表工作目录,绿色代表暂存区。
git commit
命令进行提交,提交的历史会被记录下来
git mv
将 git 管理的文件进行重命名
git rm
从 git 管理的文件删除某个已管理的文件,同时把修改的情况添加到暂存区
git log
命令查看提交历史,也就是版本演进历史
上面已经稍微使用了一下 git log
命令,这边更加详细的来阐述这个命令
2.4. 分支相关
分支就相当于一个独立的开发空间,比如前端和后端开发,前端开发可以建立一个分支,后端开发也可以建立一个分支,但是彼此在不同工作空间里面工作的时候是互不影响的,当需要集成的时候又可以把他们集成到一个公共的分支上面去。下面是有关分支的操作:
HEAD->temp2 表示当前的 HEAD 指向的是 temp2 分支,那么其实真正指向的是该分支最后一次 commit
git branch
查看分支情况、创建分支、删除分支
如下图所示,要想删除 temp 分支就得用 -D
git checkout
切换分支或者创建分支
> 切换分支,必须在.git的同级目录下执行
2.5. 比较 --- git diff
2.5.1. 不同 commit、分支 之间进行比较
1.可以直接使用 HEAD,因为 HEAD 实际上指向的是某个 commit 的。同理,比较两个分支的差异其实就是比较两个分支最近 commit 的差异,因为分支名其实就是一个指针,指向的还是分支最近的 commit。
2.^ 后面只能跟数字1,一个 ^ 就表示往父亲 commit 这边追溯一个,以此类推
3.~ 后面跟任何数字都可,同样一个 ~ 就表示往父亲 commit 这边追溯一个,以此类推
2.5.2. 暂存区和 HEAD 做比较
比如一开始的话,HEAD 、暂存区和工作目录都是一样的,都是状态A,并且 readme*.md 文件都已经被跟踪起来了。下面我们修改 readme3.md 文件,之后把它 add 到暂存区。然后使用上述命令进行比较,因为 HEAD 中的是历史,还没有被更新,是状态 A,而暂存区是状态 B,所以可以显示出差异。
2.5.3. 工作目录和暂存区做比较
比如一开始的话,HEAD 、暂存区和工作目录都是一样的,都是状态A,并且 readme*.md 文件都已经被跟踪起来了。下面我们修改 readme3.md 文件,但是不 add 到暂存区,然后使用上述命令进行比较,由于readme3.md 是在工作区中已经被更改了,工作区是版本 B,而暂存区还没更新是版本 A,所以进行比较会有如下结果。
不甘于「本该如此」,「多选参数 」值得关注。
版权声明: 本文为 InfoQ 作者【多选参数】的原创文章。
原文链接:【http://xie.infoq.cn/article/6d2d56c1a8bd1449a6a317d39】。文章转载请联系作者。
评论