什么是Git
linus用C语言写的分布式版本控制系统。前者有CVS、SVN这些集中式的版本控制系统,但速度慢,且需联网,另有一些系统比这两者好用,不过需要付费,与Linux的开源精神不符,如BitKeeper。也正是它的东家BitMover公司因为开发Samba的Andrew试图破解BitKeeper的协议(据说不止他一个),要收回Linux社区的免费使用权,才迫使Linus在两周之内自己动手用C写了一个分布式版本控制系统。并在一个月内转移Linux的源码由Git来管理了。
集中式vs分布式
Git基本概念
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git工作流
git创建仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| git init 在当前目录下创建Git仓库 git init newrepo 使用指定目录作为Git仓库 git add 命令可将该文件添加到缓存
git status 命令用于查看项目的当前状态 git status -s 简短的结果输出。如果没加该参数会详细输出内容 git diff 显示已写入缓存与已修改但尚未写入缓存的改动的区别 git diff --cached 查看已缓存的改动 git diff HEAD 查看已缓存的与未缓存的所有改动 git diff --stat 显示摘要而非整个diff
git commit 记录缓存区的快照 git commit -m 记录缓存提供提交注释 git commit -a 跳过git add 提交缓存的流程
git reset HEAD 取消缓存已缓存的内容 git reset HEAD -- [文件名] git rm 将文件从缓存区中移除,默认情况下,会将文件从缓存区和你的硬盘中(工作目录)删除 git rm --cached 在工作目录中留着该文件,仅删除缓存区的文件 git mv 相当于git rm --cached 有点多余
// 初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。 // 如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交: git add *.c git add README git commit -m 'initial project version'
// 从现有仓库克隆,如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字: git clone [url]
|
分支管理
1 2 3 4 5
| git branch (branchname) 创建分支 git checkout (branchname) 切换分支 git merge 合并分支
git branch 列出分支
|
最后更新时间:
这里可以写作者留言,标签和 hexo 中所有变量及辅助函数等均可调用,示例:
http://ah-well.github.io/2019/04/11/gitLearn/