Git原理
每个项目都有一个 Git 目录,它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。 从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录,这些文件实际上都是从 Git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。 所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。
对于任何一个文件,在 Git 内都只有三种状态:
1.已提交(committed)
2.已修改(modified)
3.已暂存(staged)
已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。 所以Git 管理项目时,文件流转分为三个工作区域:
1.Git 的工作目录
2.暂存区域
3.以及本地仓库。
首先安装 Git
在你开始使用 Git 前,需要将它安装在你的计算机上。 即便已经安装,最好将它升级到最新的版本。 你可以通过软件包或者其它安装程序来安装,或者下载源码编译安装。下载完打开安装包直接傻瓜式下一步即可。
Window安装
http://git-scm.com/download/win 下载Git客户端软件,和普通软件 安装方式一样。
Linu安装
CentOS发行版:sudo yum install git
Ubuntu发行版:sudo apt-get install git
Mac安装
打开Terminal直接输入git命令,会自动提示,按提示引导安装即可
一、配置自己的GitHub账号
git config --global user.name "自已的名字"
git config --global user.email "自已的邮箱地址"
二、项目初始化
git init 项目初始化
git status 查询状态
git add file * 或 -A 添加文件到暂存区
git reset --hard sha值 恢复到上一次的提交
git clone (项目地址) 将远程仓库克隆到本地
三、 项目本地代码上传到远程仓库
git add . 项目添加到暂存区
git commit -m "" 项目提交的注释
git remote add origin + (git路径) 项目远程库地址
git pull --rebase origin master 项目本地和远程同步合并
git push -u origin master 项目推送到远程仓库
四、 项目分支管理
git branch 查看分支
git branch -a 查看所有的分支 绿色*为选中状态
git checkout (分支名字) 切换分支
git checkout -b (分支名字) 创建分支 -b表示创建并切换
git checkout - 切换到上一个分支
git merge (分支名字) 合并某分支到当前分支
git branch -d (分支名字) 删除分支
五、 撤回修改
git reset --hard 回到节点的commit时的状态
git reset --soft 只重置本地仓库文件 工作区文件不变
git checkout file 文件撤销其修改
git checkout . 本地所有修改的,没有的提交的,都返回到原来的状态
git checkout -- 若继续该命令,则会删除掉刚刚的修改内容
六、共享仓库
mkdir repo.git 创建以.git结尾目录
cd repo.git 进入这个目录
git init --bare 初始化一个共享仓库,注意选项--bare
这样我们就建好了一个共享的仓库,但这时这个仓库是一个空的仓库。 以上是我们直接创建裸仓库的步骤,除了上面的方法外,我们还可以通git clone --bare 仓库地址的形式,将已有一个仓库导出成裸仓库向共享仓库共享内容 通过: git push 仓库地址 从共享仓库里取出内容 git clone ./repo.git demo git pull ../repo.git master
七、git提交的格式
1.提交类型说明 :
feat :新功能
fix :修复bug
doc : 文档改变
style : 代码格式改变
refactor :某个已有功能重构
perf :性能优化
test :增加测试
build :改变了build工具 如 grunt换成了npm
revert: 撤销上一次的commit
scope :用来说明此次修改的影响范围 可以随便填写任何东西 commitizen也给出了几个 如:location 、browser、compile不过我推荐使用
all :表示影响面大 ,如修改了网络框架 会对真个程序产生影响
loation: 表示影响小,某个小小的功能
module:表示会影响某个模块 如登录模块、首页模块 、用户管理模块等等
subject: 用来简要描述本次改动,概述就好了
body:具体的修改信息 应该尽量详细
footer:放置写备注啥的,如果是 bug ,可以把bug id放入
网友评论