目录
1. 版本控制
Git就是一个开源的分布式版本控制系统.负责项目的版本管理
1.1 什么是版本控制
在项目开发过程中,我们不停的添加内容进行,在这过程中,我们会形成很多版本的项目。版本控制就是能够记录我们项目的历史记录,进行备份保存,我们可以很方便的对历史记录进行读取。
最大的优点:是一种管理多人协同开发项目的技术。
1.2 常见版本控制工具
1. 用的最多的是三个:RCS,SVN和Git
- RCS:本地版本控制,适用于个人
- SVN: 集中式版本控制,服务器有全部的数据。版本数据都存储在服务器,需要同步更新修改记录,但是服务器损坏,数据全部丢失。
- Git:分布式版本控制,每个人都有全部的数据。在本地和服务器都有一个数据的备份,抗风险能力更好。
2. Git和SVN的区别
1)SVN是集中式版本控制系统,数据放在中央服务器,需要不时向服务器更新数据。必须联网,对宽带要求高,服务器崩了,有丢失数据的风险。
2) Git是分布式版本控制系统,数据在本地和和服务器都有备份。每个合作成员都有全部的历史数据,可在无网络情况下进行,在有网时上传,抗风险能力高。
2. Git环境配置
- 下载地址
镜像网站下载地址:镜像网站
- 安装
无脑安装,全部默认。卸载流程:先删除环境变量中Git信息,再一键卸载
- 启动GIt
1. 三个程序
1)Git Bash:Unix和Linus风格的命令行,使用最多,推荐最多
2)Git CMD :Window风格命令行
3)Git GUI :图形界面Git,初学者不适用
2. 常用的Linux命令(要多用才记得住)
目录相关
1)cd: 改变目录
2)cd… 回到上一个目录,直接cd,进入默认目录
3)pwd: 显示当前所在目录路径
文件相关
- touch index.js :新建一个文件index.js
- rm index.js :删除一个文件index.js
- ls :显示该路径下的文件和文件夹
文件夹相关
- mkdir src :新建一个文件夹src
- rm -r src :删除一个文件夹src
- mv index.html src :把文件index.html 移到文件夹mv中。
其他类型
- reset,clear,history,help,exit
3. Git的基本配置
1)姓名和邮箱配置。用户标识必须操作
4. Git基本理论
4.1 Git的三个区域
Git本地有三个工作区域,加上远程的git仓库有四个区
- 工作目录:代码正常运行所处区域,通过git.add进入暂存区
- 暂存区:代码暂存的地方,通过git commit提交至资源区
- 本地仓库:在资源区的代码能够长久保存如果想放到线上,git push
- 远程git仓库:项目提交到线上数据库
![](https://i-blog.csdnimg.cn/blog_migrate/905393a28b513497a9df7167256c1dfb.png#pic_center)
4.2 工作流程:
1)在工作目录中添加和修改文件
2)将需要进行版本管理的文件放入暂存区域: git add
3) 将暂存区域的文件提交到git仓库 : git commit
4)将本地git仓库的数据提交到线上数据库: git push
4.3 git 管理的文件有三种状态
1)已经修改
2)已暂存
3)已提交
5. Git项目搭建
5.1 本地仓库搭建
git init
5.2 远程仓库在本地复制
git clone 仓库的路径
5.3 仓库与文件的连接
1)首先在gitee新建一个项目,项目的名称要和本地项目的名称一致
2)在本地进行克隆项目
3)把本地项目中的文件全部放到克隆项目中去
4)打开Git Bash,执行三段语句
git status #查看项目中文件的状态
git add . #一个空格带个点,把所有的文件都放入暂存区
git commit -m'修改的名称' #把暂存区项目放入本地仓库,并且添加本次项目修改的名字
git push # 把这个项目上传到已经链接的线上远程仓库
在后面的项目中,直接打开IDEA,会自动执行add,只需要主动实现commit 和push操作就可以。
7. 使用码云
码云gitee是一个国内的远程数据库,方便存放代码。需要设置本机绑定SSH公钥,这样后面就会自动上传文件到码云中,不需要登录
8. IDEA中集成Git
项目上传到gitee的时候,gitee中名字要保持一致
当执行上面的创建项目,只需要commit和push操作即可
- 提交代码流程
0)pull:先拉去最新的代码到本地的库中。
1)update:与远程仓库进行合并(可以选泽合并方式merger和rebase)
2)commit:把代码上传到本地的库里
3)push:把代码上传到远程的库里
9. GIT分支
9.1 创建分支的作用:
- 分支的目的是将特性给绝缘开。通常在开发一个新功能或者紧急修复一个bug的时候会选择创建分支。
- 创建的新分支会保留主分支最后一次提交信息的全部。
9.2 关于分支的操作:
- 创建一个新分支: git branch test
- 切换到新分支: git checkout test
- 对新分支进行修改后提交: git add. // git commit -m’创建新分支’ // git push origin test
9.3 分支的合并merge(分支已经完成):
- 暴力一点,直接合并起来,存在冲突再去解决。
![](https://i-blog.csdnimg.cn/blog_migrate/53867666819594b7fa8a783f0a76486e.png#pic_center)
- 首先回到注分支上: git checkout master
- 从远程仓库中拉去最新变更的master: git pull origin master
- 合并本地分支test: git merge test
- 把本地的代码再传到远程上去: git push origin master
9.3 分支的合并rebase(分支已经完成):
- 在原来的分支后面接上新的分支的内容,但是存在历史commit覆写的问题。
- 最终在分支上看,呈现一条直线。
- 首先回到注分支上: git checkout master
- 从远程仓库中拉去最新变更的master: git pull origin master
- 合并本地分支test: git rebase test
- 把本地的代码再传到远程上去: git push origin master
10. Git提交的常用命令:
1)没有现成远程仓库,本地仓库连接到某个远程服务器:Git remote add origin <server.>
2)改动提交到远程仓库:git push origin <master.>
3)远程仓库的重命名:git remote rename test test1 (名字从test变为test1)
4)远程仓库的移除:git remote rm test1;
5)查看提交历史:git log --author=bob
6)覆盖上一次的提交操作: git –amend
7)取消暂存的文件: git reset filename
8)撤销对文件的修改:git checkout – filename
9)丢弃本地所有改动和提交,拉取远程服务器最新历史版本: git fetch origin
重要的命令
1)git pull =git fetch 和 git merge FETCH_HEAD :从远程仓库拉去最新代码,并且合并
2)git update :从远程仓库拉去最新代码,并且合并(那个版本高,就保留那个分支),故合并完后需要在update下。
3)版本退回的几种方式:git restore
11. Git提交的常用命令:
- 还原00:工作区中未加到暂存区和版本库的文件,还原今天所做的修改
尝试下Ctrl+z吧,不行就找找自动保存的缓存文件,看看能不能找到之前版本 - 还原01:工作区中未加到暂存区和版本库的文件,执行了 git add 操作
直接使用 git restore --staged file_name 命令,如果版本不支持则使用 git rm --cached file_name - 还原02:版本库中的文件,修改或删除后未执行 git add 操作
直接使用 git restore file_name 命令,如果版本不支持则使用 git checkout – file_name - 还原03:版本库中的文件,修改或删除后执行了 git add 操作
直接使用 git restore --staged file_name 命令,按 <还原02> 情况处理 - 还原04:版本库中的文件,修改或删除后执行了 git add、git commit 操作
直接使用 git reset HEAD^ 命令,按 <还原02> 情况处理,或者使用 git reset --soft HEAD^ 命令,按 <还原03> 情况处理 - 还原05:版本库中的文件,修改或删除后执行了 git add、git commit、git push 操作
先按照 <还原04> 情况处理,然后使用 git push -f 命令 - 还原06:两次git commit 之后产生两条日志,只还原第一次提交
使用 git revert HEAD^ 命令,解决冲突后提交,revert 后面跟具体的 commit id 也可以。
文章内容主要参考:1. 视频同步笔记:狂神聊Git
部分图片来源: