Git之源
Linus — 创造了Linux和Git
Git优点
Git在设计之初就是为了搞定linux内核这种巨无霸而设计的
- 快
- 本地仓库
- 轻量级分支
- 分布式
- 各种工作流
谁在使用
- Git
- Linux Kernel
- Eclipse
- Perl
- Android
- TypeScript
- webkit
Git和SVN的区别
| Git | SVN |
|---|---|
| 分布式 | 集中式 |
| 只关心文件数据的整体是否发生变化 | 只关心文件内容的具体差异 |
| 先commit到本地仓库 | 断开网络或者断开VPN就无法commit代码 |
| 基于key/value的方式存储文件 | 原始文件的储存方式(新版svn已改成元数据存储) |
| add、commint、push | commint |
git仓库的工作流
git的文件状态
- git add 将修改添加到暂存区
- git checkout --file 取消对文件的修改
- git reset HEAD 取消已经暂存的文件
- git checkout HEAD --file 撤销对工作区的修改
- git reset HEAD 清空add命令向暂存区提交的关于file文件的修改
tag的概念及使用
-
tag是git版本库的一个标记,指向某个commit的指针。
-
tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 …这样的标签。
-
tag感觉跟branch有点相似,但是本质上和分工上是不同的:
| tag | branch |
|---|---|
| 对应某次commit, 是一个点,是不可移动的 | 对应一系列commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。 |
| 不改动只查看 | 改动代码 |
| 指令 | 作用 |
|---|---|
| git tag tagname | 新建一个标签 |
| git tag -a tagname -m “xxx” | 创建一个带备注的tag,备注信息由-m指定 |
| git tag v0.1 [commit id] | 从指定位置新建标签 |
| git tag | 可以查看所有标签。 |
| git show tagname | 查看某一标签 |
| git tag –d tagname | 删除某一标签 |
创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令。
本文深入探讨了Git的历史起源,由Linus创造并专为管理如Linux内核等大型项目而设计。Git以其快速、本地仓库、轻量级分支和分布式特性著称。文章列举了多个知名项目使用Git的情况,并对比了Git与SVN的不同之处。此外,还详细讲解了Git的工作流、文件状态以及tag的使用方法。
4万+

被折叠的 条评论
为什么被折叠?



