3.5 提交本地库
3.5.1 将暂存区的文件提交到本地库
基本语法 git commit -m "日志信息" 文件名
3.5.2 查看状态(没有文件需要提交)
3.5.3 查看信息(版本号等)
3.6 修改文件
3.6.1 修改文件 + 查看状态(检测到工作区有文件被修改)
3.6.2 添加到暂存区 + 查看状态(工作区的修改添加到了暂存区)
3.6.3 提交到本地库 + 查看版本信息
3.7 历史版本
3.7.1 查看历史版本
基本语法:
git reflog
查看版本信息git log
查看版本详细信息
3.7.2 版本穿梭
基本语法:git reset --hard 版本号
通过 git reflog 查看当前指向的版本号 也可以在 D:\Git-Space\git-demo.git\refs\heads 目录下打开master文件,里面保存的信息是当前master指向的版本号
3.7.3 Git 切换版本原理
底层其实是移动的 HEAD 指针
4.Git 分支操作
4.1 什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。 使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。 对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
4.2 分支的好处
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
4.3 分支的操作
命令名称 | 作用 |
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
4.3.1 查看分支
基本语法:git branch -v
4.3.2 创建分支
基本语法:git branch 分支名
4.3.3 切换分支
基本语法:git checkout 分支名
4.3.4 修改分支
4.3.5 合并分支
基本语法:git merge 被合并的分支名
4.3.6 产生冲突
冲突产生的表现:后面状态为 MERGING
冲突产生的原因:
- 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。 Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
- 查看状态(检测到有文件有两处修改:both modified)
4.3.7 解决冲突
- 编辑有冲突的文件,删除特殊符号,决定要使用的内容。 文件形式:
<<<<<<< HEAD 当前分支的代码 === == = 合并过来的代码 hot-fix - 添加到暂存区
- 执行提交(注意:此时使用 git commit 命令时不能带文件名)
4.3.8 创建分支和切换分支分析
- master、hot-fix 其实都是指向具体版本记录的指针。 当前所在的分支,其实是由 HEAD决定的。所以创建分支的本质就是多创建一个指针。
- HEAD 如果指向 master,那么我们现在就在 master 分支上。 HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上。
- 所以切换分支的本质就是改变 HEAD 指针 指向。
5.Git 团队协作机制
5.1 团队内协作
举个例子: 岳不群首先用 git 初始化自己的本地库,写了一套华山剑法,利用push 命令将自己的本地库推送到代码托管中心(Github、Gitee), 大弟子令狐冲通过 clone 克隆命令完整的复制到自己的本地库, 令狐冲修改两招之后,必须确定自己的身份,是华山派岳不群的弟子, 才能将自己的本地库再次 push 到代码托管中心, 这样岳不群就可以通过 pull 命令拉取令狐冲修改的代码 来更新自己的本地库。
5.2 跨团队协作
岳不群这个团队觉得这套华山剑法还是太low了,于是令狐冲请日月神教的东方不败团队帮忙修改。 东方不败团队就将岳不群远程库中的华山剑法 fork 到自己的远程库,clone and push。 修改完毕,就发个请求 Pull request 给岳不群,告诉岳不群团队已经将 华山剑法 修改成了 辟邪剑法, 岳不群收到请求,就审核这套辟邪剑法,觉得写的很不错,就merge合并过来。 这样,岳不群团队的所有人都可以pull拉取下来修炼升级后的辟邪剑法版的华山剑法。
6.GitHub 操作
- GitHub 网址:https://github.com/
- 全球最大同性交友网站,技术宅男的天堂,新世界的大门。
6.1 创建远程仓库
6.2 远程仓库操作
命令名称 | 作用 |
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
6.2.1 创建远程仓库别名
基本语法:
git remote -v
查看当前所有远程地址别名git remote add 别名
远程地址
6.2.2 推送本地分支到远程仓库
基本语法:git push 别名 分支
6.2.3 克隆远程仓库到本地
基本语法:git clone 远程地址
注意:如果创建的是public库(开源),则任何人都有对该远程库的读权限,因此clone是不需要登录的
6.2.4 拉取远程仓库到本地
基本语法:git pull 别名 分支
6.2.5 邀请加入团队
- 选择邀请合作者
- 填入想要合作的人
- 复 制 地 址 并 通 过 微 信 钉 钉 等 方 式 发 送 给 这个想要合作的人
- 合作的这个人在自己github账号中的地址栏复制收到邀请的链接,点击接受邀请。
6.3 跨团队合作
- 将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败
- 在东方不败的 GitHub 账号里的地址栏复制收到的链接,然后点击 Fork 将项目叉到自己的本地仓库。
- 东方不败就可以在线编辑叉取过来的文件,编辑完毕后,填写描述信息并点击左下角绿色按钮提交。
- 接下来点击上方的 Pull 请求,并创建一个新的请求
- 回到岳岳 GitHub 账号可以看到有一个 Pull request 请求。
- 如果代码没有问题,可以点击 Merge pull reque 合并代码。
6.4 SSH 免密登录
我们可以看到远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问。
- 在自己的C盘的用户目录下打开git bush,输入指令ssh-keygen -t rsa -C Mr-Write@aliyun.com,即可创建.ssh文件
- 复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys
- 复制ssh链接
- 拉取远程仓库到本地
- 推送本地分支到远程仓库