一、Git 优势
- 大部分操作在本地完成,不需要联网
 - 完整性保证
 - 尽可能添加数据而不是删除或修改数据
 - 分支操作非常快捷流畅
 - 与 Linux 命令全面兼容
 
二、Git 程序安装
https://git-scm.com
三、Git 结构
四、Git 和 代码托管中心
- 局域网环境下
 
- GitLab 服务器
 - 外网环境下
 
- GitHub
 - 码云
 
五、本地库和远程库
团队内部协作
跨团队协作
六、Git 命令行操作
1、本地库初始化
- 命令:
 git init- 效果:
 - 注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要随意修改
 
2、设置签名
- 形式:
 
- 用户名
 - Email 地址
 - 作用:区分不同开发人员的身份
 - 辨析:这里的签名与登录远程库(代码托管中心)的账号密码没有任何关联
 - 命令:
 
- 项目级别 / 仓库级别:仅在当前本地库范围内有效
 
git config user.name abcdefggit config user.email abcdefg_pro@123.com- 信息保存位置:
 ./.git/config- 系统用户级别:登录当前操作系统的用户范围
 
git config --global user.name abcdefggit config --global user.email abcdefg_pro@123.com- 信息保存的位置:
 ~/.gitconfig- 优先级:(就近原则)项目级别 > 系统用户级别
 
3、基本操作
- 状态查看操作
 
git status
查看工作区、暂存区状态- 添加操作
 
git add [file name]
将工作区的“新建/修改”添加到暂存区- 提交操作
 
git commit -m 'commit message' [file name]
将暂存区的内容提交到本地库- 查看历史记录
 
git log(多屏显示控制方式:空格向下翻页;b 向上翻页;q 退出)
git log --pretty=oneline
git log --oneline- 前进后退
 
- 本质
 
git reflog- 基于索引值操作(推荐)
 
git reset --hard [局部索引值]- 使用 ^ 符号:只能往后退
 
git reset --hard HEAD^
一个 ^ 表示后退一步,n 个表示后退 n 步- 使用 ~ 符号:只能后退
 
git reset --hard HEAD~n
表示后退 n 步- reset 命令的三个参数对比
 
- soft 参数:仅仅在本地库移动 HEAD 指针
 - mixed 参数:在本地库移动 HEAD 指针,并重置暂存区
 - head 参数:在本地库移动 HEAD 指针,并且重置暂存区和工作区
 - 删除文件并找回
 
- 前提:删除前文件存在是的状态提交到了本地库
 - 操作:
 git reset --hard [指针位置]- 比较文件差异
 
git diff [文件名]:将工作区中的文件和暂存区进行比较
git diff [本地库中历史版本]:将工作区中的文件和本地库历史记录比较
不带文件名比较多个文件
4、分支管理
在版本控制过程中,使用多条线同时推进多个任务。
好处:
- 同时并行推进多个功能开发,提高开发效率
 - 各个分支在开发过程中,如果其中一个分支失败不会对其他分支产生任何影响
 
分支操作
- 创建分支
 
git branch [分支名]- 查看分支
 
git branch -v- 切换分支
 
git checkout [分支名]- 合并分支
 
- 切换到接受修改的分支上(被合并、增加新内容)上
 
git checkout [被合并分支名]- 执行 merge 命令
 
git merge [有新内容分支名]- 解决冲突
 
- 编辑文件,删除特殊符号
 - 把文件修改到满意程度,保存退出
 git add [文件名]git commit -m "日志信息"(此时 commit 不能带任何文件名)
七、Git 基本原理
哈希
- 不论输入的数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
 - 哈希算法确定,输入数据确定,输出数据能够保持不变
 - 哈希算法确定,输入数据在变化,输出数据一定变化,而通常变化很大
 - 哈希算法不可逆
 Git 底层采用的是 SHA-1 算法
原理:
八、GitHub
1、创建远程库
2、在本地创建远程库地址别名
git remote -v:查看当前所有远程地址别名
git remote add [别名] [远程库https地址]
3、推送操作
git push [别名] [分支名]
4、克隆
- 命令:
 
git clone [远程地址]- 效果:
 
- 完整地把远程库下载到本地
 - 创建 origin 远程地址别名
 - 初始化本地库
 
5、拉取
- pull = fetch + merge
 git fetch [远程库地址别名] [远程分支名]git merge [远程库地址别名/远程分支名]git pull [远程库地址别名] [远程分支名]
6、解决冲突
如果不是最新推送,必须先拉取
7、跨团队协作
点击 Fork
本地修改,然后推送到远程
对话
审核代码
将远程库拉取到本地
8、SSH 登录
进入当前用户的加目录
cs ~删除 .ssh 目录
rm-rvf .ssh运行命令生成 .ssh 密钥目录
ssh-keygen -t rsa -C abcdefg@123456.com
[注意:这里 -C 这个参数是大写]进入 .ssh 目录查看文件列表
cd .ssh
ls - lF查看 id_rsa.pub 文件内容
cat id_rsa.pub复制 id_rsa.pub 文件内容,登录 GitHub
New SSH Key
输入复制的密钥信息
回到 Git hash 创建远程地址别名
git remote add origin_ssh git@github.com:abcdefg@123456/[项目名称].git推送文件进行测试




















![[OJ]平均串问题,存在超时问题未解决](https://i-blog.csdnimg.cn/blog_migrate/7dc7555f7defc05f3ac8c1decb45b743.png)