今天花了半个下午学了有关Git的使用知识,之前也有接触Git,但是用得少,每回都是学了忘,忘了又学,归根到底是没有认真的去理解Git,而且以前学习有误区,Git和Github掺和着学,以为两个是一种东西(这种思想一定要纠正),将下午所学知识简单总结如下:
- Git和Github的区别
- 本地仓库相关操作
- 远程仓库相关操作
- Git中分支的概念及作用
- blame的作用
- 标签的概念及作用
- 其余用到了再补充
Git和Github
首先推荐看廖雪峰的Git教程,简单清楚易理解,感谢老师~ [ 廖雪峰Git教程]
简单来说,Git是分布式的版本控制工具,通过Git我们可以实现对软件版本控制的管理,协作开发,而Github则是提供git托管服务的一个网站,如果你只使用Git,那么你就需要找一台Linux操作系统的电脑专门充当Git服务器负责提供公共仓库,而有了Github后显然方便了很多,你只需要注册一个账户,便可以拥有自己的远程仓库。
本地仓库相关操作
关于安装和配置省略部分省略
内容 | 操作 |
---|---|
创建本地仓库 | git init |
添加文件 | git add |
删除文件 | git rm |
提交操作 | git commit |
查看工作区状态 | git status |
查看操作提交记录 | git log |
穿梭版本 | git reset –hard CmmitId |
查询提交操作id | git reflog |
撤销工作区修改动作 | git checkout – file |
撤销暂存区修改动作 | git reset HEAD file |
工作区和暂存区概念理解
本地仓库由git维护的三棵树组成,工作区,暂存区,和版本库,HAED版本库中用来指向分支对应操作的指针,当我们要执行一次“修改”(增删改)操作时,其实是分两步进行的
git add/rm 将文件的修改从工作区添加到暂存区
git commit 将文件的修改从暂存区添加到版本库
如果只执行了到暂存区操作而没有执行添加到版本库操作,log中不会有记录的,也正因为暂存区的引入,Git在版本管理上也更加灵活,比如出现误删情况,如果还没有提交,可以使用指令一键还原,即使提交了找到commitid还是能回到之前版本。
balme的作用
功能如名字,谁的错找谁,出现BUG,如果你要查看文件的每个部分是谁修改的,运行git blame [filename], 就能得到整个文件的每一行的详细修改信息:包括SHA串,日期和作者。
分支概念及作用
分支模型是Git的精髓思想,通过分支,可以实现不同人对同一项目的封闭式修改,当各自分支符合要求事再进行合并,从而实现协作开发。对于分支的指针实质,我现在还不是很理解,但分支策略对于团队开发而言真的很棒,将master分支作为主分支不做大修改,而将bug分支,新功能分支等交由成员完成,检验无错再合并到主分支,分支相关操作如下:
内容 | 操作 |
---|---|
创建分支 | git branch branchname |
跳转分支 | git checkout branchname |
列出分支 | git branch |
合并指定分支到当前分支 | git merge branchname |
删除分支 | git branch -d branchname |
远程仓库相关操作
远程仓库分为两种,自己搭建的Git服务器,和使用Github托管,文章只涉及使用Github托管远程仓库。
创建SSH密钥
在本地执行创建ssh密钥指令,一路回车,成功后,在对应文件夹下找到id_rsa.pub文件,将秘钥复制备用
ssh-keygen -t rsa -C "github-emailaddress"
在Github上创建远程仓库并绑定密钥,既可以作为备份,又可以让其他人通过该仓库来协作。
相关操作如下:
内容 | 操作 |
---|---|
关联远程仓库 | git remote add origin git@github.com:name/.git |
将本地改动提交到远程仓库 | git push -u origin master |
克隆远程仓库至本地 | git clone git@github.com:lidachui/test.git |
注:由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,之后就不再加-u了。
标签概念及作用
为方便表示commitid而引入的概念,因为commitid较长且难以记忆,引入标签,在版本回退或向前是直接跳到制定的标签对应的commitid,方便使用。