Git结构
- 本地库 历史版本
- 暂存区 临时存储
- 工作区 写代码
工作区 → git add → 暂存区 → git commit → 本地库
Git命令行操作
本地化操作
本地库初始化
git init
设置签名
形式
- 用户名:toam
- Email地址:2333@qq.com
区分开发人员身份
# 项目级别/仓库级别:仅在当前本地库范围内有效,优先级更高
git config user.name toam
git config user.email 2333@qq.com
# 信息保存位置:./.git/config 文件
# 系统用户级别:登录当前操作系统的用户范围
git config --global user.name toam
git config --global user.email 2333@qq.com
#信息保存位置:~/.gitconfig 文件
基本操作
状态查看
查看工作区、暂存区状态
git status
添加
将工作区的“新建/修改”添加到暂存区
git add [file name]
提交
将暂存区的内容提交到本地库
git commit -m "commit message" [file name]
查看历史纪录
git log
多屏显示控制方式:
- 空格向下翻页
- b 向上翻页
- q 退出
# 每条日志显示一行
git log --pretty=oneline
# 每条日志显示一行(部分哈希值)
git log --oneline
# 添加了HEAD@{移动到当前版本需要多少步}
git reflog
前进后退
- 基于索引值操作[推荐]
HEAD代表指针
git reset --hard [局部索引值]
- 使用^符号:只能后退
注:一个^表示后退一步,n个表示后退n步
git reset --hard HEAD^^^
- 使用~符号:只能后退
注:表示后退n步
git reset --hard HEAD~n
reset命令的三个参数对比
-
--soft
参数
仅仅在本地库移动HEAD指针- 本地库后退,凸显暂存区和工作区
-
--mixed
参数
在本地库移动HEAD指针;重置暂存区- 本地库,暂存区后退,凸显工作区
-
--hard
参数
在本地库移动HEAD指针;重置暂存区;重置工作区- 并排
删除文件并找回
- 前提:删除前,文件存在时的状态提交了本地库
- 操作:
git reset --hard [指针位置]
# 删除操作已经提交到本地库:指针位置指向历史记录
# 删除操作尚未提交到本地库:指针位置使用HEAD
比较文件差异
- 将工作区中的文件和暂存区进行比较
git diff [文件名]
- 将工作区中的文件和本地库历史记录比较
git diff [本地库中历史版本] [文件名]
- 不带文件名比较多个文件
分支管理
什么是分支?
在版本控制过程中,使用多条线同时推进多个任务。
一般使用feature
为前缀命名新功能
一般使用hot_fix
为前缀命名修复bug
分支操作
- 创建分支
git branch [分支名]
- 查看分支
git branch -v
- 切换分支
git checkout [分支名]
- 合并分支
- 切换到接受修改的分支(被合并,增加新内容)上
git checkout [被合并分支名]
- 执行merge命令
git merge [有新内容分支名]
- 解决冲突
- 第一步:编辑文件,删除特殊符号
- 第二布:把文件修改到满意的程度,保存退出
- 第三步:
git add [文件名]
- 第四步:
git commit -m "日志信息"
;注意:此时commit 一定不能带具体文件名
Git基本原理
Git 底层采用的是 SHA-1 算法。
GitHub
创建远程库地址别名
# 查看当前所有远程地址别名
git remote -v
git remote add [别名] [远程地址]
推送
git push [别名] [分支名]
克隆
git origin [远程地址]
- 完整的把远程库下载到本地
- 创建origin 远程地址别名
- 初始化本地库
拉取
pull = fetch + merge
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
git pull [远程库地址别名] [远程分支名]
解决冲突
- 如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取。
- 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
跨团队协作
Fork
→ Pull requests
→ 审核代码Files changed
→ 合并代码Merge pull request
SSH登陆
- 删除
.ssh
目录 - 运行命令生成
.ssh
密钥目录
ssh-keygen -t rsa -C atguigu2018ybuq@aliyun.com
- 查看
id_rsa.pub
文件内容 - 复制
id_rsa.pub
文件内容,登陆Github
,点击用户头像 →Settings
→SSH and GPG keys
New SSH Key
- 输入复制的密钥信息
- 回到
Git bash
创建远程地址别名
git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git
- 推送文件进行测试