Git使用
一、Git介绍
1.1 版本控制(理解)
无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况
但我们不能只保留最后一次修改的文件,其余版本也要保留,有可能老板想要的就是你的上一个版本的
1.2 开发中存在的问题(理解)
-
程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!
几个月来的努力付之东流
代码备份不仅要备份到本地,还需要备份到云端
要是电脑坏了,那所以的代码全都白写了
-
老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。 可是这被改得面目全非的代码已经回不到从前了。
版本控制很重要!
-
小明和老王先后从文件服务器上下载了同一个文件
协同工作也很重要!
-
因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写的
责任追溯很重要!
1.3 SVN版本控制(理解)
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑, 所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
-
服务器单点故障
将会导致所有人员无法工作
-
而服务器硬盘损坏
这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的。
1.4 Git与SVN对比
Git是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者,维护Linux系统内核的开发 而开发了自己的开源分布式版本控制工具,分为两种类型的仓库:本地仓库和远程仓库。
-
每一个客户端都保存了完整的历史记录
服务器的故障,都可以通过客户端的记录得以恢复。
二、Git下载和安装
2.1 Git的下载
官网下载地址:Git - Downloads
2.2 Git的安装
-
双击安装包,进入安装向导界面
-
指定安装目录
-
一路next下一步,等待安装
-
安装完成
Git Bash:Git提供的命令行工具
Git GUI: Git提供的图形界面工具
Git CMD 就像带有 git 命令的常规 Windows 命令提示符。 它允许您通过命令行使用所有 Git 功能。
-
运行Git命令客户端,使用git --version 命令,可以查看git版本
2.3 TortoiseGit的安装
TortoiseGit:图形化工具
搜索TortoiseGit进官网下载
再下载一个对应的:TortoiseGit-LanguagePack
-
双击安装包,进入安装向导界面
-
一路next下一步
-
指定安装目录
-
安装
-
配置
-
安装TortoiseGit中文语言包,一路next即可
-
配置TortoiseGit中文语言
显示为中文就表示设置好啦
三、Git操作入门
3.1 Git 基本工作流程(理解)
本地仓库
先在工作目录(Working Tree)中写代码,然后再通过git命令把代码添加到暂存区(index)中,最后把写好的代码提交到本地历史仓库中
3.2 Git 常用命令
命令 | 作用 |
---|---|
git init | 初始化,创建 git 仓库 |
git status | 查看 git 状态 (文件是否进行了添加、提交操作) |
git add 文件名 | 添加,将指定文件添加到暂存区 |
git commit -m '提交信息' | 提交,将暂存区文件提交到历史仓库 |
git log | 查看日志( git 提交的历史日志) |
3.3 Git 基本工作流程
步骤:
-
创建工作目录、初始化本地 git 仓库
-
新建一个 test. txt 文件(暂不执行添加操作)
-
使用 status 命令,查看状态
-
使用 add 命令添加,并查看状态
-
使用 commit 命令,提交到本地历史仓库
-
使用 log 命令,查看日志
-
修改 test. txt 文件
-
添加并提交,查看日志
commit 会把暂存区中所有的文件全部添加到本地仓库中
操作步骤
-
创建工作目录、初始化本地 git 仓库
-
新建一个 test.txt 文件(暂不执行添加操作)
-
使用 status 命令,查看状态
-
使用 add 命令添加,并查看状态
-
使用 commit 命令,提交到本地历史仓库
-
使用 log 命令,查看日志
-
修改 test.txt 文件
-
添加并提交,查看日志
3.4 Git使用图形化工具来操作(理解)
-
创建工作目录、初始化本地 git 仓库
-
新建一个 test.txt 文件(暂不执行添加操作)
-
选中文件右键,选择TortoiseGit,之后选择添加
-
空白处右键,Git提交,提交到本地历史仓库
-
空白处右键,TortoiseGit,显示日志,可以产看日志信息
-
修改 test.txt 文件
-
添加并提交,查看日志
四、Git版本管理
4.1 历史版本切换(理解)
-
准备动作
-
查看 my_project 的 log 日志 git reflog :可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)
-
增加一次新的修改记录
-
-
需求: 将代码切换到第二次修改的版本
指令:git reset --hard 版本唯一索引值
4.2 分支管理介绍(理解)
分支在干活时并行工作,互不打扰,最终能合并到一起
-
分支
-
由每次提交的代码,串成的一条时间线
-
使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
-
-
分支的使用场景
-
周期较长的模块开发 假设你准备开发一个新功能,但是需要一个月才能完成 第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug 那现在就需要放下手中的新功能,去修复Bug 但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。
-
尝试性的模块开发 业务人员给我们提出了一个需求,经过我们的思考和分析 该需求应该可以使用技术手段进行实现。 但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发。
-
-
分支工作流程
-
Master: 指向提交的代码版本
-
Header: 指向当前所使用的的分支
-
主分支:Master
当你提交了第一个代码版本,那Master指向的就是第一个版本,提交第二个代码版本,Master指向的就是第二个版本,以此类推
假设Dev这个分支的功能我们实现完了,怎么把这个分支合并到主分支上?
-
把Dev提交一次
-
再让Master这个指针,指向到Dev当前的时间版本
-
然后让header指针指向回Master这个主分支
即可完成合并
如图:
如果你觉得Dev这个分支现在没必要留下来,那么你可以直接把它删了
-
创建新分支
-
切换分支
-
合并分支
-
删除分支
4.3 分支管理操作
-
创建和切换
创建分支命令:git branch 分支名 切换分支命令:git checkout 分支名
-
新分支添加文件
查看当前分支文件命令:ls
-
合并分支
合并分支命令:git merge 分支名
-
删除分支
删除分支命令:git branch -d 分支名
-
查看分支列表
查看分支命令:git branch
总结:不同分支之间的关系是平行的关系,不会相互影响
git 本地仓库
五、远程仓库
5.1 远程仓库的工作流程(理解)
push(推送):将本地仓库的内容传送到远程仓库中
pull(拉取):将远程仓库中更新了的内容复制到本地仓库中(更克隆有区别,不是全部复制,只复制了更新的内容)
clone(克隆):将远程仓库中的所有内容复制一份到本地仓库中
5.2 常见的远程仓库托管平台
-
GitHub
域名:https://github.com 介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站
各类好玩有趣的开源项目,只有想不到,没有找不到。
-
码云
域名:https://gitee.com 介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库
5.3 创建远程代码仓库
1、先有本地仓库,再建远程仓库
先创建好本地仓库,再创建远程仓库
-
步骤
-
创建本地仓库
-
创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库
-
创建远程仓库
-
推送到远程仓库
-
注意:推送代码之前,需要先配置 SSH 公钥
生成SSH公钥
生成SSH公钥步骤
-
设置Git账户
-
git config user.name(查看git账户)
-
git config user.email(查看git邮箱)
-
git config --global user.name “账户名”(把账户名设置为一种全局的账户名)
-
git config --global user.email “邮箱”(把邮箱设置为全局邮箱)
注:--global:表示这台机器上所有的Git仓库都会使用这个配置
-
cd ~/.ssh(查看之前是否生成过SSH公钥)
-
-
生成SSH公钥
-
生成命令:
ssh-keygen –t rsa –C “邮箱”
( 注意:这里需要敲3次回车)
-
查看命令:
cat ~/.ssh/id_rsa.pub
-
设置账户公钥
-
公钥测试
命令:ssh -T git@gitee.com
命令:ssh -T git@github.com
-
推送到远程仓库
-
步骤
-
为远程仓库的URL(网址),自定义仓库名称
-
推送
-
-
命令 git remote add 远程仓库名称 远程仓库URL git push -u 仓库名称 分支名
2、先有远程仓库,再建本地仓库
步骤
-
将远程仓库的代码,克隆到本地仓库 克隆命令:git clone 仓库地址
-
创建新文件,添加并提交到本地仓库
-
推送至远程仓库
-
项目拉取更新 拉取命令:git pull 远程仓库名 分支名
5.4 代码冲突问题
产生原因:
两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码,之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库
也就是说对于远程仓库来说同一份文件出现不同的代码内容,这样就是代码冲突
如何解决冲突
注:cat 文件:查看文件
<<<<<<<和>>>>>>>中间的内容,就是冲突部分
-
修改冲突行,保存,即可解决冲突。
-
重新add冲突文件并commit到本地仓库,重新push到远程
六、在IDEA中集成Git
6.1 在IDEA中配置Git
-
File(文件) -> Settings(设置)
-
Version Control (版本控制)-> Git -> 指定git.exe文件的存放目录
-
点击Test测试
6.2 在IDEA中版本切换
方式一: 控制台Version Control->Log->Reset Current Branch...->Reset
这种切换的特点是会抛弃原来的提交记录
方式二:控制台Version Control->Log->Revert Commit->Merge->处理代码->commit
这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留
Revert 操作会当成一个新的提交记录 这种回退的好处在于,如果后悔了"回退"这个操作也可以回退到没有回退之前的版本因为历史记录还保留提交记录