1.Git 的基本介绍
(1)Git
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件
(2)版本控制应具备的功能
-
协同修改
-
数据备份
-
版本管理(不保存重复数据)
-
权限控制
-
历史记录
-
分支管理
(3)版本控制简介
集中式版本控制工具 SVN (存在单点故障的风险)
分布式版本控制工具Git
(4)Git的优势
大部分在本地完成,不需要联网
完整性保证
尽可能添加数据而不是删除或修改数据
分支操作非常的流畅快捷
与Linux命令全面兼容
2.Git 的本地结构
3.Git和代码托管中心,维护远程库
团队内成员参与开发流程
团队外成员参与开发流程
4.Git 常用命令行操作简介
(1)初始化
命令:git init
效果:创建.git目录
(2)签名
命令: git config user.name [Username]
git config user.email [Email]
git config --global user.name [Username]
git config --global user.email [Email]
效果:设置局部/全局用户签名
这里的用户名和邮箱与外部库(如Github)的用户名和邮箱没有任何关系
局部签名是写在.git目录下的config文件中的
(3)查看状态
命令: git status
效果:查看当前状态
(4)add
命令: git add [filename]
效果:添加文件名为[filename]的文件到暂存区
(5)rm
命令 :git rm --cached [filename]
效果:将文件名为[filename]的文件从暂存区中删除
(6)commit
命令:git commit -m
效果:commit到本地库
(7)查看历史记录
命令: git log
git log --pretty=oneline
git log --oneline
git reflog
效果:查看历史记录
reflog哈希值位数小
(8)前进后退方法
命令:git reset --hard [索引值,reflog即可]
git reset --hard HEAD^^^^^^^
git reset --hard HEAD~[num]
效果:前进或后退到某一版本
^和~只能后退不能前进
^个数表示后退的版本数
~后边跟数字表示后退的版本数
参数 --hard 重置本地库、暂存区、工作区
--mixed重置本地库 、暂存区
--soft 仅重置本地库
(9)比较
命令:git diff [文件名]
效果:将工作区文件与暂存区文件比较
命令:git diff [本地库中历史版本] [文件名]
效果:将工作区与本地库中的历史版本比较
(10)分支
命令:git branch -v
效果:查看分支
命令 : git checkout [分支名]
效果:切换分支
命令:git branch [分支名]
效果:创建分支
命令: git merge [分支名]
效果:当前分支合并分支名指定分支
5.Git基本原理简介
Git 采用的是SHA-1加密算法
基于指针移动,保证速度
明文 —>哈希算法—>密文
哈希算法的特点
不管输入的数据量有多大看,输入同一哈希算法,得到的加密长度相同
哈希算法确定,输入数据确定,输出保持不变
哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
哈希算法不可逆
6.Github
1.基本操作简介(Https)
在本地: git remote add [origin] [地址] 用[origin] 替代地址
克隆: git clone [地址] 完整把远程库下载到本地。创建origin远程地址别名。初始化本地库。
push : git push [origin] 将本地库推送至远程库中
拉取 git fetch [origin] master 没有改变本地文件
git checkout origin/master
git merge origin/master
pull: pull = fetch + merge
2.SSH免密登录
首先进入家目录
cd ~
删除以前创建的ssh
rm -r .ssh/
输入
ssh-keygen -t rsa -C [邮箱]
输入此命令后后边会有一些确认选项,直接回车即可
此命令会生成.ssh目录
进入此目录
cd .ssh
里边会有一个id_rsa.pub 文件
cat id_rsa.pub
将文件内容复制,登陆GitHub账号,在GitHub网页Personal settings中的左侧栏SSH and GPG keys选项中,选择new SSHkey,在Key一栏中粘贴内容 ,Title 随便写
ssh配置完成
接下来,可以复制ssh地址,用以下命令
git remote add [origin_ssh] [ssh地址]
就可以使用**git push [origin_ssh]**进行push操作了,不需要输入用户名和密码