0. 序言
v1.0 版的吧。除此之外,附有了第一集文本的小册子,这时候还会有两篇有关 Git 的,全篇都有这种的这份小册子。
1. Git 的四个地区
在正式宣布 git 以后,他们先来介绍呵呵 git 的 3 个地区,依次是组织工作产品目录、甲类、版发展史。那个习题是至关重要的,在认知了这四个地区后,git 的操作方式才会变得很难。
组织工作产品目录是间接跟文档有关的,比如说被 git 管理工作出来的文档被修正了不然,在选用 git status 指示查阅的这时候会表明出。表明的文本就是较之以后的版 A 更改了的什么样文档;当选用 git add 指示后,文档修正的小东西就被递交到甲类了,而组织工作产品目录中版是变动后了的,比如说版 B。所以选用 git status 后,甲类表明的文本是相较版 A 的变动的文档重要信息,也相等于是版 B 的情形;当选用 git commit 后,那个更动就被递交到了版发展史中,所以版发展史就从版 A UESAC了版 B;
2. Git 此基础选用
2.1. Git 实用性有关
在选用 Git 管理工作文档系统的这时候,须要展开许多实用性,比如说选用者重要信息的实用性。 Git 管理工作文档系统主要分成四个层级,如下表右图右图(PS:只输出上面那些指示是没用的)
# config的四个返回值
# 隐式等同local
$ git config –local # local只对某一库房有效率
$ git config –global # global对登入选用者大部份库房有效率,在选用者根产品目录下,比如说 root 选用者就在 /root 产品目录下为个有关 git 的实用性文档
$ git config –system # systemVertus大部份登入的用户有效率,基本上不必
错误率 local > global > system,换句话说卡杜尔县一个库房与此同时增设了 global 和 local 所以选用local实用性的重要信息。查阅实用性重要信息
很多这时候他们也会查阅 Git 实用性重要信息等,选用如下表右图指示可以查阅适当层级的实用性重要信息# 表明 config 的实用性 加–list
$ git config –list –local # 那个只能在git库房中选用$ git config –list –global
$ git config –list –system
实用性重要信息—以选用者重要信息为例$ git config –global user.name
your_name
$ git config –global user.email
[email protected] Git 相较于其他版控制系统须要那些重要信息,是因为在版控制中,做出的修正是跟那些选用者重要信息捆绑在一起的。绑定的 email 是为了,当评审人员对代码提出了适当的修正,所以 Git 管理工作系统会对修正代码的递交者绑定的 email 发送邮件。所以email 须要是一个有效率的 email,能收的到邮件的 email。清除实用性重要信息$ git config –unset –local user.name
$ git config –unset –global user.name
2.2. 建立 Git 库房
把已有的项目代码纳入 Git 管理工作$ cd 项目代码所在的文档夹
$ git init
新建的项目间接用Git管理工作$ git init your_project# 会在当前路径下创建和项目名称同名的文档夹
$ cd your_project
2.3. 库房管理工作常用指示
git add 主要是把新文档或者文档变动的情形添加到甲类$ git add readme.md# 将 readme.md 文档添加到甲类
$ git add . # 将当前组织工作产品目录的大部份文档添加到甲类
$ git add -u # 把修正后的文档(那些文档已经被管理工作出来了)一次性递交到甲类
甲类的文档也是相等于被 git 管理工作了的。git status 可以查阅组织工作产品目录和甲类的状态$ git status
Tips:假如 bash 有颜色表明不然,会看到红色是代表工作产品目录,绿色代表甲类。git commit 指示展开递交,递交的发展史会被记录下来$ git commit -m Add readme.md # -m 指定 commit 的重要信息
$ git commit # 这这时候会跳出一个文本输出界面,让你输出更多的 commit 重要信息
git mv 将 git 管理工作的文档展开重命名git mv readme readme.md # 选用git的方式对文档展开重命名
git rm 从 git 管理工作的文档删除某一已管理工作的文档,与此同时把修正的情形添加到甲类
git log 指示查阅递交发展史,也就是版演进发展史
上面已经稍微选用了呵呵 git log 指示,这边更加详细的来阐述这个指示
git log # 只查阅当前分支(Head所指的分支)的log情形
git log –oneline # 简洁的表明版更新重要信息
git log -n2 # n2 代表查阅最近两次commit发展史git log -2# 2 代表查阅最近两次commit发展史
git log -n2 –oneline # 简洁的表明最近两次的版更新重要信息
git log branch_name # 后面跟上分支名表示查阅该分支的log日志
git log -all # 列出大部份分支的log
git log –all –graph # 以图形化的方式查阅
git log –oneline –all # 以简洁的方式查阅大部份分支的log
git log –oneline –all -n4# 以简洁的方式查阅大部份分支的log
git help log # 以web的方式查阅log的帮助文档,等同
git help –web log # 和上面那条效果一样
2.4. 分支有关
分支就相等于一个独立的开发空间,比如说前端和后端开发,前端开发可以建立一个分支,后端开发也可以建立一个分支,但是彼此在不同组织工作空间里面组织工作的这时候是互不影响的,当须要集成的这时候又可以把他们集成到一个公共的分支上面去。上面是有关分支的操作方式:
HEAD->temp2 表示当前的 HEAD 指向的是 temp2 分支,所以其实真正指向的是该分支最后一次 commit
git branch 查阅分支情形、创建分支、删除分支git branch -v # 查阅本地分支的详细情形
git branch -a # 查阅大部份分支,包括远端分支,但没有过于详细的重要信息git branch -av# 查阅大部份分支情形
git branch branch_name hash_value # 创建一个新的分支,基于 hash_value 的那个 commit 创建一个新的分支,hash_value 可以省略,所以默认是基于当前分支的最后一个 commit 创建。git branch -d branch_name
git branch -D branch_name# 那个分支已经有了许多 commit
如下表右图图右图,要想删除 temp 分支就得用 -D
git checkout 切换分支或者创建分支git checkout branch_name # 切换分支git checkout master
git checkout -b branch_name git_id# 创建一个新的分支并切换过去,git_id可以是hash_value,也可以是某一分支的名字(分支的名字其实就指向了某一 commit)
git checkout -b temp 9ef147d
git checkout -b temp2 master
切换分支,必须在.git的同级产品目录下执行
2.5. 比较 — git diff
2.5.1. 不同 commit、分支 之间展开比较
git diff hash_value1 hash_value2 # hash_value1 对应的 comimit 和 hash_value2 对应的 commit 展开比较git diff hash_value1 hash_value2 — file_name1 file_name2# 在上述此基础之上,只比较 file_name1、file_name2 这两个文档
git diff branch_name1 branch_name2 # 对两个分支展开比较git diff branch_name1 branch_name2 — file_name1 file_name2
git diff HEAD HEAD^# HEAD 指向的 commit 与该 commit 的父亲 commit 展开比较
git diff HEAD HEAD^1 # 同上
git diff HEAD HEAD^^ # HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 展开比较
git diff HEAD HEAD~ # HEAD 指向的 commit 与该 commit 的父亲 commit 展开比较
git diff HEAD HEAD~1 # 同上git diff HEAD HEAD~~# HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 展开比较
git diff HEAD HEAD~2 # 同上
1.可以间接选用 HEAD,因为 HEAD 实际上指向的是某一 commit 的。同理,比较两个分支的差异其实就是比较两个分支最近 commit 的差异,因为分支名其实就是一个指针,指向的还是分支最近的 commit。
2.^ 后面只能跟数字1,一个 ^ 就表示往父亲 commit 这边追溯一个,以此类推
3.~ 后面跟任何数字都可,同样一个 ~ 就表示往父亲 commit 这边追溯一个,以此类推2.5.2. 甲类和 HEAD 做比较
git diff –cached
比如说一开始不然,HEAD 、甲类和组织工作产品目录都是一样的,都是状态A,并且 readme*.md 文档都已经被跟踪出来了。上面他们修正 readme3.md 文档,后把它 add 到甲类。然后选用上述指示展开比较,因为 HEAD 中的是发展史,还没有被更新,是状态 A,而甲类是状态 B,所以可以表明出差异。
2.5.3. 组织工作产品目录和甲类做比较
git diff# 对大部份文档展开比较
git diff — file_name1 file_name2 # 对指定文档展开比较
比如说一开始不然,HEAD 、甲类和组织工作产品目录都是一样的,都是状态A,并且 readme*.md 文档都已经被跟踪出来了。上面他们修正 readme3.md 文档,但是不 add 到甲类,然后选用上述指示展开比较,由于readme3.md 是在组织工作区中已经被更动了,组织工作区是版 B,而甲类还没更新是版 A,所以展开比较会有如下表右图结果。