Git - 版本控制系统

目录

一、概述

配置用户信息

二、Git仓库

创建

本地仓库

git的三个区域

示例 

Git文件状态

举例

三、区域使用

暂存区使用

版本库使用

文件忽略

四、分支

步骤

合并与删除

步骤

合并与提交

合并冲突

五、常用指令

六、Git远程仓库

使用步骤 

克隆

同步

七、图形化界面中使用Git

VScode上使用git

在idea中使用git

克隆git

添加远程仓库


一、概述

        git是一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码。作用是记录代码内容,切换代码版本,多人开发时高效合并代码内容。

直接安装git,默认下一步,然后就能在VScode中看到git控制台

Git - 版本控制系统_第1张图片

Git - 版本控制系统_第2张图片

配置用户信息

配置:用户名和邮箱,应用在每次提交代码版本时表明自己的身份。

命令:

        git config --global user.name "在这里设置名字"

        git config --global user.email "在这里设置邮箱"

设置完毕后使用命令 git config --list 查看配置是否生效


二、Git仓库

Git仓库:记录文件状态内容的地方,存储着修改的历史记录

创建

1、把本地文件夹转换成Git仓库:命令git init

2、从其他服务器上克隆git仓库

本地仓库

打开一个程序,执行命令git init,这会生成一个.git文件夹,这是用来保存文件的

创建好的.git文件夹是隐藏目录,不打开隐藏可见的话是看不到的

git的三个区域

工作区:实际开发时操作的文件夹

暂存区:保存之前的准备区域(暂存改动过的文件)

版本库:提交并保存暂存区的内容,产生一个版本快照

命令 作用
git add 文件名 暂存指定文件
git add . 暂存所有改动的文件(推荐)
git commit -m "注释说明" 提交并保存,产生版本快照

Git - 版本控制系统_第3张图片

示例 

现在我们有一个程序,我们尝试将它上传至git管理

Git - 版本控制系统_第4张图片

git ls-files 这个指令可以查看是否成功存入暂存区,之后再提交

这样即代表提交成功

注意:

Git - 版本控制系统_第5张图片

        出现这种警告是因为文件中有多余的空白字符。由于编辑器的不同或者文件行尾的换行符在 Windows 下被替换了,一些细微的空格变化会不经意地混入提交,造成麻烦。虽然这是小问题,但它会极大地扰乱跨平台协作。

具体可以查看这篇博客icon-default.png?t=N7T8https://blog.csdn.net/u012757419/article/details/105614028


Git文件状态

git文件有两种状态

        未跟踪:新文件、从未被Git管理过(U)

        已跟踪:Git已经知到和管理的文件(A)

版本查看指令:git status -s

        这与git的基本使用相关,先总结一下上面的内容,我们书写一个程序,此时它的状态为未修改(’‘)。我们使用git add指令后,git会将它放入暂存区中,程序变为已修改状态(M),直到我们使用git commit命令,git才会将我们所写的程序以版本的形式存入版本库,未来我们可以通过这个回退版本。注意提交并不会清空暂存区,且会让项目文件重置为未修改状态

        因此git的基本使用就是: 修改文件,暂存,提交保存记录,如此反复

举例

更改文件,文件的后面就会有 M 标记,这代表此时它被修改了

或者此时可以输入指令  git status -s ,确实处于 M 已修改状态

提交会清空状态

Git - 版本控制系统_第6张图片


三、区域使用

暂存区使用

暂存区作用:可以恢复代码内容,与版本库解耦。

git restore [ 目标文件 ]:使用这个命令 ,即可让暂存区的目标文件覆盖工作区的目标文件(确认真的要覆盖的时候再使用)

git rm --cached [ 目标文件 ]:从暂存区中移除文件

Git - 版本控制系统_第7张图片

版本库使用

版本回退:将版本库的某个版本对应的内容快照,恢复到工作区/暂存区

查看提交历史:git log --oneline

、 

Git - 版本控制系统_第8张图片

回退指令:

git reset --soft [ 版本号 ]:新添加的文件,也就是未被跟踪的文件会被保留

git reset --hard [ 版本号 ]:新添加的文件,也就是未被跟踪的文件会被删除,完完全全的恢复到保存的版本

git reset --mixed [ 版本号 ]:工作区中未被跟踪的文件会被保留,而暂存区中的会被删除,这个与直接输入git reset的效果一样

文件忽略

.gitignore文件可以让git彻底忽略跟踪指定文件。

目的:让git仓库更小更快,避免重复的无意义文件管理

例如:

  1. 系统或软件自动生成的文件
  2. 编译时产生的结果文件
  3. 运行时生成的日志文件、缓存文件、临时文件等
  4. 涉密文件,密码,密钥等

Git - 版本控制系统_第9张图片

前端文件中,一般都忽略这些文件。


四、分支

概念:本质上是指向提交节点的可变指针,默认名字是master

简单来说,就是一个容器,可以保存某个提交的节点记录。

使用场景:

        开发新需求/修复bug,保证主线代码随时使用,多人协同开发提高效率。

比如:在现有的代码上创建新的分支完成内容列表业务,突然需要紧急修复bug -> 单独创建分支解决bug

Git - 版本控制系统_第10张图片

步骤

  1. 创建分支:git branch [ 分支名 ]
  2. 切换分支:git checkout [ 分支名 ]
  3. 工作区准备代码并暂存提交

Git - 版本控制系统_第11张图片

这里面我创建了一个分支content,当我们切换回master时,我们所写的content的代码都不见了,但是我们切换回来的时候就出现了。

合并与删除

将写好的分支合并回到master分支上,并删除分支

指令:git merge [ 分支 ]

步骤

  1. 切回到要合入的分支上:git check master
  2. 合并其他分支:gir merge [分支]
  3. 删除合并后的分支指针:git branch -d [分支]

Git - 版本控制系统_第12张图片

查看版本列表,成功合并

Git - 版本控制系统_第13张图片

删除分支

合并与提交

如果有多条分支,且在合并的时候发现已经被别的分支合并过了,那么就会自动生车成一个新的分支,这个分支下会拥有所有的代码

Git - 版本控制系统_第14张图片

使用指令git merge content

注意:这个指令这会比较不同分支的提交时间,因此以时间为顺序合并到分支上

Git - 版本控制系统_第15张图片

使用指令检验一下分支

Git - 版本控制系统_第16张图片

发现content指向8而不是10

合并冲突

Git - 版本控制系统_第17张图片

Git - 版本控制系统_第18张图片

这个错误只能手动解决,让两个不同的文件相同,否则无法合并

因此为了避免

Git - 版本控制系统_第19张图片


五、常用指令

总结一下 上面涉及的指令

命令 作用 注意
git -v 查看git版本
git init 初始化git仓库
git add [ 文件标识 ] 暂存某个文件 这个文件路径要以终端为起始的相对路径
git add . 暂存所有文件
git commit -m " 说明注释 " 提交版本记录 提交的是暂存区的内容
git status 查看文件状态 -详细信息
git status -s 查看文件状态 -简略信息 第一列是暂存区状态,第二列是工作区状态
git ls -files 查看暂存区文件列表
git restore 文件标识 从暂存区恢复到工作区 若文件标识为 . 那么就是恢复全部文件 
git rm --cached 文件标识 从暂存区移除文件
git log 查看提交记录 -详细信息
git log --oneline 查看提交记录 -简略信息 版本号 分支指针 提交时说明注释
git reflog --oneline 查看完整历史 包括提交,切换,回退等记录
git reset 版本号 切换版本代码到暂存区和工作区 --hard 不保留任何文件
git branch 分支名 创建分支
git merge 分支名 合并分支
git branch -d 分支名 删除分支
git branch 查看本地分支
git checkout 分支名 切换分支
git checkout -b 分支名 创建并立刻切换分支


六、Git远程仓库

概念:托管在因特网或其他网络中的项目的版本库

作用:保存版本库的历史记录,多人协作

创建:公司自己的服务器 / 第三方托管平台(Gitee,GitLab,GitHub...)

Git - 版本控制系统_第20张图片

使用步骤 

我们在这里使用第三方托管平台Gitee

1、注册账号

2、新建仓库得到远程仓库Git地址

3、本地Git仓库添加远程仓库原点地址

        命令:git remote add 远程仓库名 本地和远程分支名

4、本地Git仓库推送版本记录到远程仓库

        命令:git push -u 远程仓库名 本地和远程分支名

        例如:git push -u origin master

在gitee中创建一个仓库,其中有两种地址

Git - 版本控制系统_第21张图片

连接一下地址,会发现有两个地址

Git - 版本控制系统_第22张图片

如果想要取消连接,那么就使用指令

git remote remove origin   移除仓库

提交版本至远程仓库,使用指令git remote push -u origin master,如果是第一次使用gitee,那么就会出现登录界面,登录就行了

Git - 版本控制系统_第23张图片

Git - 版本控制系统_第24张图片

如果你的项目中有README.md文件,那么在gitee网页上就会展示出来作为这个项目的介绍和使用说明 

克隆

拷贝一个Git仓库到本地,进行使用

Git - 版本控制系统_第25张图片

要克隆首先要准备一个空文件夹

Git - 版本控制系统_第26张图片

然后使用Git的窗口

Git - 版本控制系统_第27张图片 Git - 版本控制系统_第28张图片

同步

多人协同开发:想要看到别人同步上去的最新内容:git pull origin master

Git - 版本控制系统_第29张图片

通过这个,当别人的项目更新了就不需要重新克隆一个了,直接pull过来就行了


七、图形化界面中使用Git

VScode上使用git

vscode左边会有这么一个工具,叫做源代码管理

Git - 版本控制系统_第30张图片

其中会显示有更改的文件

Git - 版本控制系统_第31张图片

只要点击就会对比两个文件的修改位置,左边是更改前,右边是更改后 。点击加号 + 就会保存修改将其保存在暂存区

Git - 版本控制系统_第32张图片

点击提交就会提交到本地仓库中

Git - 版本控制系统_第33张图片

点击同步更改就会将本地仓库中的记录推送到远程仓库中

Git - 版本控制系统_第34张图片

可以看到是拉去并推送提交

就是说底层是先pull了一下再push的,这是因为再多人协作的时候,如果两个人同时修改了同一个文件,但是彼此又不知道。那么先push的人就可以修改成功,后push的人就会发生合并冲突,如果强制push,远端仓库会自动合并,保留出现冲突的内容(上一个版本和刚提交的内容都会被保留下来)。这时代码将不能正常运行,其他同事在执行 pull 拉取新代码后会发现无法运行,这就给别人造成了很大的麻烦。所以即使是自己使用命令行操作git,也要养成push前先pull一下的习惯。

在idea中使用git

1、在设置中配置git,在idea中使用git,本质上还是使用的本地安装的git软件。

Git - 版本控制系统_第35张图片

2、获取仓库

Git - 版本控制系统_第36张图片

点击创建Git仓库,将仓库创建到这个项目中,则此时项目中就会多一个.git文件夹,相当于git init

Git - 版本控制系统_第37张图片

VCS也会变成git,用于可视化操作git指令 

Git - 版本控制系统_第38张图片

克隆git

打开idea界面,点击VCS获取

Git - 版本控制系统_第39张图片

或者准备一个空项目,点击VCS的从版本控制中获取

Git - 版本控制系统_第40张图片

在这里输入URL

Git - 版本控制系统_第41张图片

Git - 版本控制系统_第42张图片

添加远程仓库

右键文件,点击git - 管理远程

Git - 版本控制系统_第43张图片

然后点击 +

Git - 版本控制系统_第44张图片

就可以连接仓库了

你可能感兴趣的:(git)