Git个人学习指南
什么是Git:在初始化git版本库之后会生成一个隐藏的文件 .git,这个文件可以理解成为git的版本库repository,而我们自己建立的项目文件夹就是工作区working directory,在 .git文件夹中有很多文件,其中有一个index文件,就是暂存区也可以叫做stage,git还为我们自动生成了一个分支master以及指向该分支的指针head,
1. 版本控制工具所具有的功能
(1)协同修改:多人并行不悖的修改服务器端的同一个文件
(2)数据备份:保存目录和文件的当前状态,还能保存每一个提交过的历史状态
(3)版本管理:在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率.SVN采用的是增量式管理的方式,而git采取了文件系统快照的方式
(4)权限控制:对团队中参与开发的人员进行权限控制,团队外开发者贡献度代码进行审核,这是git独有的
(5)历史记录: 查看修改人,修改时间,修改内容,日志信息,将本地文件恢复到某一个历史状态.
(6)分支管理:允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率.
2. Git的优势
(1)大部分操作在本地完成,不需要联网
(2)完整性保证
(3)尽可能添加数据而不是删除或修改数据
(4)分支操作非常快捷流畅
(5)与linux命令全面兼容
3. 工作区(working Directory) 暂存区 Git Repository(Git仓库) 远程仓库
git add git commit git push
4. Git和代码托管中心
(1)GitLab(局域网)
(2)GitHub
(3)码云
5. Git命令行操作
(1)初始化:git init
(2)设置签名:git config user.name(Email)/git config --global设置用户名和email地址,用以区分不同开发人员的身份,与登录远程库(即托管中心)账号无关
(3)文件状态:git status
(4)从暂存区撤回add:git rm --cached 文件名
(5)提交:git commit
6. 基本操作
(1)状态查看操作:git status(查看工作区,暂存区状态)
(2)添加操作:git add[file name](将工作区的新建或修改添加到暂存区)
(3)提交操作:git commit -m "commit message"[file name](将暂存区的内容提交到本地库)
(4)查看历史记录:git log --pretty=oneline(以一行显示) git log --oneline git reflog(显示回退版本需要几步)
(5)版本前进/后退:
基于索引值操作:git reset --hard [局部索引值]
基于~操作:只能后退git reset --hard HEAD~n(回退n个版本)
基于^操作:只能回退操作git reset --hard HEAD^(一个^回退一个版本)
git help [指令]:可在线查看指令文档
注解:reset三个属性的对比
soft参数:仅在本地库中移动HEAD指针
mixed参数:在本地库中移动HEAD指针同时重置暂存区 hard参数:在本地库中移动HEAD指针同时重置暂存区和工作区
(6) 删除文件并找回
前提:删除前,文件存在时的状态提交到了本地库
操作:git reset --hard[指针位置]
删除操作已经提交到了本地库:指针位置指向历史记录
删除操作尚未提交到本地库:指针位置使用HEAD
(7)比较文件差异:git diff[文件名]是将工作区文件将暂存区文件进行比较
git diff[本地库中历史版本][文件名]:将工作区中的文件和本地库历史记录比较
7. 分支:在版本控制过程中,使用多条线同时推进多个任务
优点:(1)同时并行推进多个功能开发
(2)各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响.失败的分支删除重新开始即可.
8. 分支操作
(1)创建分支:git branch[分支名]
(2)查看分支:git branch -v
(3)切换分支:git checkout[分支名]
(4)合并分支:1)切换到接受修改的分支上
2)执行merge命令:git merge [新内容分支名]
9. git的基本原理
1. 哈希:是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
1)不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定.
2)哈希算法确定,输入数据确定,输出数据能够保证不变
3)哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
4)哈希算法不可逆:Git底层采用的是sha-1算法
10. git保存版本机制
1. 集中式版本控制工具的文件管理机制:以文件变更列表的方式存储信息,这类系统将他们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异
2. git把数据看作是小型文件系统的一组快照.每次提交更新时git都会对当前的全部文件制作一个快照并保存这个快照的索引.为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件.所以git的工作方式可以称之为快照流.
git remote -v
git remote add origin [链接]
git pull --rebase origin master
11. 克隆
1. 完整的把远程库下载到本地
2. 创建origin远程地址别名
3. 初始化本地库
4. git clone [远程仓库]
12. 拉取
1. pull=fetch+merge
2. git fetch[远程地址别名][远程分支名]
3. git merge[远程地址别名/远程分支名]
13. 解决冲突
要点:1.如果不是基于GitHub远程库的最新版所做的修改,不能修改,必须先拉取.
2.拉取下来后,如果进入冲突状态,则按照"分支冲突解决"操作解决
14. 跨团队协作
15. eclipse操作
1. 工程初始化为本地库
2.eclipse中忽略文件
概念:eclipse特定文件,.classpath文件,.project文件,.setting目录下所有文件
忽略文件
.classpath
.project
.setting
target
在c盘用户下.gitconfig文件增加
[core]
excludesfile = [忽略文件路径(使用正斜线)]