Git
0x0. GitHub用户信息
Username: fourgold
Email address: lijinxinok@163.com
密码:IELTS-rise-to-6.5-!
验证邮箱:lijinxinok@163.com
邮箱密码:qinni123!
0x1. Github常用命令
2.1初始化操作
#初始化本地仓库
git init
#查看隐藏文件./git
ls -lA
ll .git/
#.git存放的是本地库相关的子目录以及文件
#初始化本地配置 设置签名 这个签名和登录远程库和账号密码没有任何关系
#global代表的是系统用户级别
git config --global user.name JInxinLi
#初始化本地邮箱
$ git config --global user.email Jinxin@atguigu.com
#签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
就近原则:项目级别的优先于系统用户级别,采用项目级别的签名
签名信息保存在哪里?
./git/config
系统用户保存在哪里?
~/.gitconfig
2.2实际操作
git add添加到暂存区还可以撤销
HEAD是一个指针
#查看主文档 暂存区与工作区的状态 默认matser分支
git status
#添加暂存区
git add
#提交到本地库 hello.txt是文件名1
git commit -m "version1.0" hello.txt
#推送matser开发线到远程仓库
git push sparkStreaming master
#将远程仓库的内容克隆到本地
git clone http
#拉取远程仓库内容
git pull sparkStreaming master
#查看历史版本 (HEAD -> matser) HEAD是一个指针
git log
git reflog
#切换版本号
git reset --hard 087a1a7
#创建分支
git branch hot-fix
#查看分支
git branch -v
#切换分支
git checkout hot-fix
#合并分支
#注意当前分支为master
git merge hot-fix
#冲突解决后提交
git commit -m "merge hot-fix"
####新建别名url
git remote -v
git remote add origin https://url....
git remote -v
##推送
git push origin master
##克隆操作
git clone url
#回车
#完整的把远程库下载到本地
#创建origin远程地址别名
#初始化本地库
#邀请别人加入到协作组中
#点击邀请,就变成了团队成员
#pull = fetch+merge
git fetch origin master
#将远程库的master拉取下来
#切换到origin master
#查看远程的master分支[远程地址][远程分支]
git checkout origin/master
#合并远程的master分支[远程地址][远程分支]
git merge origin/master
git pull origin/master
冲突解决
当主分支已经提升了版本,而我们的clone的是旧版本,这个时候就已经无法推送
#解决,先拿到远程的修改 如果不是最新版所做的修改,不能修改,必须先拉取
git pull origin/master
#文件里东西修改
git add [filename]
git commit -m "version2.0"
git push origin/master
跨团队协作
#以第三者的身份先进行fork fork到自己的远程库
#克隆到本地
git clone url[自己的地址]
#然后进行增加内容
git commit -m "..." [filename]
git push origin master
#现在已经推送到自己的远程库
#本地修改,然后推送到远程
#new pull request
#create new pull result
#发送消息进行提交
#经理 打开pull request
#点击内容
#两人可以聊天
#点commits files changed
#审核代码
#merge pull request
#点这里进行合并
#合并的时候也要添加相关信息
展示的时候显示了来源
2.3查看历史记录log的方式
#最完整的形式
git log
#日志以一个漂亮的格式进行显示
git log --pretty=oneline
#hash值显示一部分
git log --oneline
#多屏幕显示控制方法
#空格向下翻页
#b向上翻页
#q退出
#在oneline的基础上显示了移动到某一个版本要移动几步
git reflog
2.4版本回退穿梭
管理历史记录的时候存在一个指针(HEAD)
我们可以把HEAD指针进行移动
#切换版本号
git reset --hard 087a1a7
2.5三种操作的参数
- 基于索引值操作[推荐]
- 使用^符号:只能往后退
#回退一步
git reset --hard HEAD^
#回退三步
git reset --hard HEAD^^^
- 使用~符号
#回退3步
git reset --hard HEAD~3
2.6参数说明
reset命令的三个参数对比
#查看本地帮助文档
git help reset
#命令
--soft
不会动index file(暂存区) and work tree(工作区)
仅仅在本地库移动HEAD指针
#将本地库后退
--mixed
在本地移动指针
重置暂存区
#将暂存区与本地库后退
--hard
移动指针
重置缓存区
重置工作区
#全部后退
2.7永久删除文件的保存
删除仅仅是一条记录,可以回退版本进行恢复
前提:删除前,文件存在时的状态提交到了本地库
git reset -hard[指针位置]
2.8添加到暂存区的删除文件找回
#暂存区与工作都是
git reset --hard HEAD
2.9比较文件差异
git diff test.txt
git diff [本地区中的历史版本][文件名]
将工作区的文件个暂存区的文件进行比较
2.10分支管理
在版本控制过程中,使用多条线控制任务的分支
分支的命名以feature开头 feature_bule
热修复的命名 hot_fix
分支能够同时并行推进多个功能的开发,提高开发效率
如果分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始
2.11分支的具体操作
master是默认分支
#查看分支
git branch -v
#创建分支
git branch hot_fix
#切换分支
git checkout hot_fix
#合并分支的步骤
#第一步:切换到接受修改的分支
git checkout master
#第二步:执行merge命令
git merge hot_fix
#解决冲突
#第一步编辑文件,删除特殊符号
#第二步把文件修改到满意
#第三步 git add[文件名]
#第四部 git commit
0x3. Git基本原理
3.1哈希算法
graph LR 明文-->加密算法-->密文
同一个数保证加密后得到同一个结果
输入数据细微变化会引起Hash巨大的变化
哈希算法不可逆
不管输入的数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
很多内容也会加密成得到的长度相同32位16进制数
Git底层采用的是SHA-1算法
用途:哈希算法用于校验文件
3.2 Git保存版本的机制
每个版本都会保存当前版本的文件状态
Git把数据看做是小型文件系统的一组快照,每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索引
为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前的存储的文件,所以Git的工作方式可以称为快照流
3.3Git如何管理分支
第一次提交是rootcommit
master与testing都算是指针,指向原来的对象
0x4. idea使用GitHub
4.1创建同步忽略文件
创建忽略规则文件xxxx.ignore(前缀名随便起)
这个文件的存放位置原则上在哪里都可以,
为了便于让~/.gitconfig文件引用,
建议也放在用户家目录下
xxxx.ignore文件内容如下:
idea.ignore
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
2)在.gitconfig文件中引用忽略配置文件(此文件在Windows的家目录中)
[user]
name = ZhangJY
email = ZhangJY@atguigu.com
[core]
excludesfile = C:/Users/ZhangJY/SH0720.ignore
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
4.2使用免密登录连接远程仓库
配置免密登录时非常有必要的
首先要明白配置免密登录使用的SSH登录方式,使用RSA
免密登陆地址
#1.进入家目录
cd
89388@DESKTOP-CEH28KV MINGW64 ~
#2.删除.ssh目录
rm -rvf .ssh
removed ‘.ssh/known_hosts’
removed directory ‘.ssh’
#3.生成免密密钥 -C +github账号
ssh-keygen -t rsa -C lijinxinok@163.com
#4.查看公钥并复制公钥
cat id_rsa.pub
#复制公钥,注意有坑,在命令行复制容易出问题
#可以去源文件的地方使用nodpad++打开
#5.添加公钥到github
#如图
然后将公钥复制进去就可以了
注意push的时候要使用SSH地址哦
#6.查看当前所有远程地址别名
git remote -v
然后将远程登录的SSH复制,添加别名
#7.别名 远程地址
git remote add SparkStreaming http:ssh登录地址
注意有坑,这里时ssh登录地址
接下来就可以测试了
#8.测试一下
git add hello.txt
git push SparkStreaming master
4.3.Git结构
graph TD 历史版本---本地库 临时存储---暂存区 写代码---工作区 工作区--git add-->暂存区 暂存区--git commit-->本地库
4.4Git和代码托管中心
局域网环境
GitLab
外网络环境
GitHub
码云
4.5 本地与内部协作
团队内部协作
加入团队可以增加权限
跨团队协作
4.6从零到一使用IDEA
创建本地库
将一个文件添加到ignore忽视
#将数据添加到ignore
git add to .gitignore
将文件添加exclude
git add to exclude
创建版本
commit
version-0.1 Copy Revison Number
回退版本
然后将版本哈希值粘贴到HEAD地方
创建分支以及合并分支
创建分支
合并分支
如何在idea里解决分支冲突
merge
添加合作伙伴
setting
manage access
0x5. HEXO个人博客
git config --global user.name "godweiyang"
git config --global user.email "792321264@qq.com"
ssh-keygen -t rsa -C "lijinxinok@163.com"
0x6. 配置图床
加油