Git 学习笔记
Git学习笔记
- 1 Git 简介
- 2 Git 安装与配置
- 3 Git 操作入门
- 3.1 Git 基本工作流程
- 3.2 Git 命令行操作
- 3.3 Git 图形化工具操作
- 4 Git 版本管理
- 5 Git远程仓库
- 5.1 远程仓库工作流程
- 5.2 远程仓库平台介绍
- 5.3 先有本地项目,远程为空
- 5.4 先有远程仓库,本地为空
- 5.5 代码冲突
1 Git 简介
Git是一种代码版本控制系统,为什么要使用代码版本控制系统呢?
因为代码版本控制系统能够很好地解决开发中要面临的问题
- 代码备份
- 版本控制
- 协同工作
- 责任追溯
SVN 与 Git 的对比
- SVN :集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
- 服务器单点故障,将会导致所有人员无法工作
- 而服务器硬盘损坏,这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的
- Git :每一个客户端都保存了完整的历史记录,服务器的故障,都可以通过客户端的记录得以恢复
2 Git 安装与配置
官网下载地址:https://git-scm.com/downloads
指定安装目录后,一路next无脑安装
安装成功后,鼠标点击右键
点击 Git Bash Here
输入git --version
可以查看版本信息
虽然Git 自带了图像化工具,但是功能不够强大,这里安装 TortoiseGit 图像化功具
安装过程较为简单,但是要注意的是其中需要指定 Git 的bin目录,一般系统会自动识别。
安装完成后,鼠标点击右键会多出一下三项
3 Git 操作入门
3.1 Git 基本工作流程
3.2 Git 命令行操作
下面通过一个案例进行演示:
(1)创建 test 工作目录、初始化本地 git 仓库
初始化完成后,会出现一个名为 .git
的隐藏文件
(2)test 文件夹中新建一个 test.txt 文件(暂不执行添加操作)
(3)使用 status 命令,查看状态
注意:
test.txt
为红色表示未执行添加操作
(4) 使用 add 命令添加(到暂存区),并查看状态
此时 test.txt
文件会发生如下变化,代表已经执行添加操作(若用户电脑首次安装TortoiseGit 图像化功具,需要重启电脑)
(5)使用 commit 命令,提交到本地历史仓库
命令引号内为本次提交信息
(6)使用 log 命令,查看日志
(7) 修改 test.txt 文件
(8) 添加并提交,查看日志
3.3 Git 图形化工具操作
(1) 创建 test1 工作目录、初始化本地 git 仓库
(2) 创建 test.txt
文件,并将其添加到暂存区,再提交至本地仓库
(3) 修改文件后,不用进行添加操作,直接第二次提交
(4)查看日志
4 Git 版本管理
(1)历史版本切换
git reflog
:可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)
git reset --hard 版本唯一索引值
(2)分支管理介绍
分支
- 由每次提交的代码,串成的一条时间线
- 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
分支的使用场景
- 周期较长的模块开发
- 假设你准备开发一个新功能,但是需要一个月才能完成
第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug
那现在就需要放下手中的新功能,去修复Bug
但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。
- 假设你准备开发一个新功能,但是需要一个月才能完成
- 尝试性的模块开发
- 业务人员给我们提出了一个需求,经过我们的思考和分析
该需求应该可以使用技术手段进行实现。
但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发
- 业务人员给我们提出了一个需求,经过我们的思考和分析
分支工作流程
- Master: 指向提交的代码版本
- Header: 指向当前所使用的的分支
(3)分支管理操作
- 创建分支:
git branch 分支名
- 查看分支:
git branch
- 切换分支:
git checkout 分支名
- 新分支添加文件后查看文件命令:
ls
Master分支里没有新分支添加的文件,但是新分支里有Master分支里的文件
- 合并分支:
git merge 分支名
- 删除分支:
git branch -d 分支名
- 查看分支列表:
git branch
注意:不同分支之间的关系是平行的关系,不会相互影响
5 Git远程仓库
5.1 远程仓库工作流程
注意:克隆是包括所有的历史版本
5.2 远程仓库平台介绍
-
GitHub
- 域名:https://github.com
- 介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站,各类好玩有趣的开源项目,只有想不到,没有找不到。
-
码云
- 域名:https://gitee.com
- 介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库
5.3 先有本地项目,远程为空
- 创建本地仓库
- 创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库
- 创建远程仓库
- 推送到远程仓库
注意:在推送代码之前需要先配置SSH公钥,否则会报错
(1)设置Git账户:
- 查看git账户:
git config user.name
- 查看git邮箱:
git config user.email
- 设置全局账户名:
git config --global user.name "账户名"
- 设置全局邮箱:
git config --global user.email "邮箱"
(2)生成SSH公钥
- 查看是否生成过SSH公钥:
cd ~/.ssh
- 生成命令:
ssh-keygen –t rsa –C "邮箱"
( 注意:这里需要敲3次回车) - 查看密钥:
cat ~/.ssh/id_rsa.pub
(3) 设置账户公钥
- 复制步骤 ⑦ 的公钥,gitee主页点击“设置”——>“SSH公钥”,粘贴
(4) 公钥测试:
ssh -T git@gitee.com
,出现“successfully”字样即成功
本地项目推送至远程仓库
(1) 为远程仓库的 URL 自定义仓库名称
git remote add 远程仓库名称 远程仓库URL
给远程仓库取一个简单名称来代替一大长串的 URL
(2) 推送至远程仓库
git push -u 远程仓库名称 分支名称
5.4 先有远程仓库,本地为空
- 将远程仓库的代码,克隆到本地仓库
克隆命令:git clone 仓库地址
- 创建新文件,添加并提交到本地仓库
- 推送至远程仓库
- 项目拉取更新
拉取命令:git pull 远程仓库名 分支名
5.5 代码冲突
产生原因:
两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码,之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库,这样就可能会导致代码冲突
如何解决冲突:
cat 文件名
<<<<<<<
和>>>>>>>
中间的内容,就是冲突部分
- 修改冲突行 ,保存,即可解决冲突。
- 重新add冲突文件并commit到本地仓库,重新push到远程