Study - Git的基本概念与命令使用

Git之源

Linus — 创造了Linux和Git

Git优点

Git在设计之初就是为了搞定linux内核这种巨无霸而设计的

  • 本地仓库
  • 轻量级分支
  • 分布式
  • 各种工作流

谁在使用

  • Git
  • Linux Kernel
  • Eclipse
  • Perl
  • Android
  • TypeScript
  • webkit

Git和SVN的区别

Git SVN
分布式 集中式
只关心文件数据的整体是否发生变化 只关心文件内容的具体差异
先commit到本地仓库 断开网络或者断开v*n就无法commit代码
基于key/value的方式存储文件 原始文件的储存方式(新版svn已改成元数据存储)
add、commint、push commint

git仓库的工作流

Study - Git的基本概念与命令使用

git的文件状态

Study - 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合并

git常用命令总结

图解git