git和svn都是程序员用来管理代码的,如果是一个人开发一个项目,版本控制这个玩意儿根本用不上,对吧。但是呢,在企业中进行开发,一个人负责一个项目的情况几乎不可能
基本概念描述
版本控制(版本迭代) 版本管理器
有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。
简单来说就是这个可以帮助多人开发进行我们项目的总和
多人开发必须使用版本控制!
我们学习的东西一定要学习当前流行的 人用的多的!!
GIT (most popular)
SVN
记录我们当下的每次文件的更新,比如说我们每次进行一个world文档更新,我们就会对这个word文档进行记录,这样久而久之
可以向我们上吧那个图片一样,每一次修改我们就会另存为。(适合自己使用)
在集中式模型中,有一台功能强大的中央服务器托管项目。每个每户都必须通过这台中央服务器。
我们每个人每天修改了 就得更新到服务器上边去
我们可以看出来就是我们都是和这个服务器进行交互 但是 万一哪一天我们的这个服务器崩掉了,我们就没法拿取最新的版本,所以说也是有问题的。
每个人都拥有全部的代码 !!就是拥有安全危险 !!(万一跑路了)
在分布式模型中,没有中央信息库,每个开发者的计算机都有一份完整的项目拷贝。因为每台计算机都有完成的项目拷贝,这就意味着我们可以离线工作,不受网络的限制了。
不会因为服务器损坏 导致不能工作的情况
就算A电脑坏了 A换一台电脑之后把B的同步一下就行
SVN是集中式的版本控制系统,版本库是放在中央服务器的,而工作的时候,都是使用自己的电脑,所以首先要从中央服务器拿到最新的版本,然后进行工作,完成工作之后,需要把自己完成的任务推送到中央服务器上边去而且需要联网
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作室不需要联网了,git协同的方法是:比如说自己在电脑上修改了文件A,其他人也在电脑上修改了文件A。这是你们两个人只需要把各自修改的推送给对方,就可以看到对方的修改,Git可以直接看到更新了哪些代码和文件。
Git是目前世界上最先进的版本控制器。
这里提供下载安装包和视频教学,大家跟着做就OK
链接:https://pan.baidu.com/s/1wNKSFxfAwjnqfff-K0jDQA
提取码:yt12 大家直接进去下载安装就好
视频gitee(码云)的注册和代码提交【手把手】_哔哩哔哩_bilibili
大家安装好之后 点击桌面就会有下面这几个东西了
1.cd …这个就是返回上一级目录 注意 中间有空格 不要遗漏
2.cd +你要进入的文件名 就可以进入
3.pwd 显示你所在哪个目录下
4.clear 清屏
5.ls(list的简写) 列出当前文件夹下的所有文件
6.touch 这个是在当前目录下新建一个文件
7.rm(remove)可以删除这个文件
8.mkdir 新建一个文件夹(make directory)
9.rm -r 删除一个文件夹
10.mv 移动文件 mv 目标对象 目的地
11.reset 重写加载终端 和clear差不多
12.history 就是看我们刚刚对命令行进行操作时 采取了哪些操作
13.help #写注释
14.exit 退出
系统的配置
本地的配置
1.git config -l 查看我们电脑当前的配置
2.git config --system --list 这个时查看我们系统给我们进行的配置 时不包含用户名和和email
3.git config --global --list 这个是查看我们自己配置的
4.所有的配置文件都保存在本地
//演示一下
git config --global user.name “你的用户名”
git config --gobal user.email “你的邮箱地址”
Git本地有三个工作区域:工作目录(Working Firectory) , 暂存区(Stage/Index) , 资源库(Repository或Git Directory).如果在加上远程的git仓库(Remote Directory) 就可以分为四个工作区域.文件在这四个区域之间的转换关系如下:
Workspace : 工作区,就是你平时存放项目代码的地方
Index/Stage : 暂存区,用于临时存放你的改动,事实上他只是一个文件**,保存即将提交到文件列表信息**
Repository : 仓库区(或本地仓库) , 就是安全存放数据的位置,这里面有你提交到所有版本的数据.其中HEAD指向最新放入仓库的版本.
Remote : 远程仓库,托管代码的服务器(gitee/github),可以简单的认为是你项目组中的一台电脑用于远程数据交换.
我们主要操作的是工作区和远程仓库
在工作目录中添加,修改文件; (需要保存的代码 userMapper)
将需要进行版本管理的文件放入暂存区;(git add)
将暂存区的文件提交到git仓库.(git commit)
因此,git管理的文件有三种状态: 已修改(modified),已暂存(staged),已提交(committed)
1.本地搭建仓库
1.创建一个全新的仓库
2.克隆远程的仓库 将远程服务器上的仓库完全镜像一份至本地
文件的四种状态
查看文件状态
# 查看指定文件状态 git status [filename]
# 查看所有文件状态 git status
git add .
添加所有文件到暂存区 *
git commit -m “消息内容”
提交暂存区中的内容到本地仓库 -m 提交信息
有些时候我们不想提交某些文件 那么这个时候就需要我们进行手动的进行配置
.gitignore
1.注册登录码云 完善个人信息(就是简单的注册操作)
2.设置本机的SSH公钥,实现免密码登录(important)//没有人很喜欢写密码
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen
//下面是指令 就是大家直接随便找一个目录 打开GIT Bash然后我们就可以将我们的代码输入
//这个时候系统会给我们创建两个文件的 我们打开 带pub结尾的 然后copy到码云上边就欧克
ssh-keygen -t rsa
之后我们利用码云创建自己的仓库
现在我们将这个文件克隆下来
供我们使用
1.我们将从远程仓库克隆到本地
git clone .....//这里书写你的远程仓库
2.我们可以新建一个项目 比如说 我们建一个Springboot的项目
然后我们在最后放到目录的时候我们将我们的文件改为我们刚刚克隆的目录下
3.add 到暂存区
4.commit就是提交到本地仓库
5.push到远程仓库
然后就可以完成我们的从本地仓库推送到远程了
其中我们可能会在push这一步出现下面的问题
[rejected] master -> master (fetch first)
error: failed to push some refs
出现这个现象的原因是因为我们的报错的原因是因为,每个仓库都有一个分支,也可以理解为大仓库里的小仓库,我们只是跟线上远程仓库有了关联,但没有跟线上远程仓库的某个分支关联,所以我们没法提交
在终端输入 git pull --rebase origin master 即可跟刚创建的线上远程仓库的默认分支master关联
这时再执行一下 git push -u origin master 即可将我们的项目文件上传到关联的线上远程文件中
这样就可以解决问题
大家下去自己去操作一把
1.观察一下 我们在我们的idea中随便创建一个项目
一种是全部copy其实只需要.git文件就行 另一个就是把目录放到与我们远程仓库同一级的目录下边 也就是为了把我们的git文件放下
2.commit(有想勾选的就勾选上)
这个时候输入push就会把我们本地仓库的代码放到我们远程的仓库了
以上都是个人的操作
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
IDEA中的选择分支的操作
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
最后大家下去可以找一个朋友,一起在这个远程仓库上边练习提交代码就ok了