Git:
版本控制
- 版本控制,就是版本迭代,要保留新的版本,但是老版本也不能直接删除,就需要一个版本管理器
版本控制,是一种在开发的过程中,用于管理我们对文件、目录、或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术
作用:
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护源代码和文档
- 统计工作量
- 跟踪整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
多人开发就必须要使用版本控制,否则有可能使版本不统一
就是用于管理多人协同开发项目的技术
常用的版本控制工具
- Git
- SVN
- CVS
- VSS
- TFS
- Visual Stdio Online
版本控制的分类
-
本地的版本控制
记录文件的每次更新,可以对每个版本做一个快照,如记录补丁文件
-
集中版本控制 SVN
所有的版本都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
多个人提交代码,如果两个人发生了冲突,就需要考虑权衡
-
分布式版本控制 Git
-
每个人都拥有全部的代码,会有一定的安全隐患
-
每个电脑上都有自己的版本控制中心,所有的版本信息仓库全部同步到本地的每个用户,不会因为服务器的损坏或网络原因造成不能工作的情况
-
提交时可以离线在本地提交,只需要联网时push到相应的服务器即可
-
由于每个用户保存的是所有的数据,只要一个人设备没有问题,就可以恢复所有的数据

-
Git与SVN的一些主要区别
SVN是集中式版本控制系统,版本库是集中在中央服务器的。在工作的时候,用的是自己的电脑,所以需要先从中央服务器得到最新的版本,然后工作;工作完成后,把自己的代码上传到中央服务器
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网。协同的方法:比如在自己的电脑上改了文件A,其他人也在电脑上改了文件A,你俩之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了
Git环境配置
软件下载
git官网:Git - 下载 (git-scm.com)
环境变量只是为了全局使用而已,现在我们可以随时使用右键打开git命令行窗口,不配置也依旧可以使用。Git安装的时候就已经帮我们配置好了
右键打开Git Bash命令行窗口
命令就是Linux的命令
查看Git配置
$ git config -l
clear清除命令,查看完配置后都需要清除
git相关的配置文件
-
git的配置全在etc目录下,etc中的gitconfig文件中就是git的系统配置(system):C:\Java\Git\git\etc\gitconfig
$ git config --system --list -
用户的配置(global),在用户的电脑下:C:\Users\天马行空.gitconfig
$ git config --global --list安装git后首先要做的就是设置用户名和Email地址。因为每次Git提交都会用到该信息。他被永远嵌入到你的提交中
编写用户的配置:
$ git config --global user.name "cjy" $ git config --global user.email "345312589@qq.com"
Git基本理论
-
工作区域
Git本地有三个工作区域:工作目录、暂存区、资源库。和远程的一个git仓库

-
本地目录:工作区,就是你平常存放代码的地方
-
暂存区:用于临时存放你的改动,实际上就是一个文件,保存即将提交到文件列表的信息
.git文件夹中的文件就是暂存区的
-
本地仓库:仓库区,就是安全存放数据的位置,这里有所有版本的数据。其中HEAD指向最新放入仓库的版本
.git中的HEAD文件,内容为ref(指向):路径为主分支,将代码提交到主分支上
-
远程仓库:托管代码的服务器,用于远程数据交换
-
工作流程:
- 在工作目录中添加、修改文件 ==》UserMapper.xml
- 将需要进行版本管理的文件放入暂存区域 ==》git add .
- 将暂存区域的文件提交到git仓库 ==》git commit
因此,git管理的文件有三种状态:已修改、已暂存、已提交

Git项目搭建
-
在本地仓库搭建 init
-
在任意工作目录下右键Git Bash
输入命令
$ git init将项目初始化,自动生成.git的隐藏文件夹
-
-
克隆远程仓库到本地 clone
-
将远程服务器上的仓库完全镜像一份至本地
克隆狂神创建的项目和它的整个代码历史
$ git clone https://gitee.com/kuangstudy/kuang_livenote.gitdone.下载完毕
-
Git文件操作
文件的四种状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先需要知道当前的文件是什么状态
- Untracked:未跟踪,新建的文件在本地的文件夹中,没有添加到git库,不参与版本控制,通过git add状态变为暂存
- Unmodify:文件已入库,但未修改,即版本库中的文件快照和文件的内容一致;这种类型的文件,有两种去处
- 如果被修改,就变为
Modified状态 - 如果使用git rm命令移出版本库,则变为
Untracked状态
- 如果被修改,就变为
- Modify:文件已修改,仅仅是修改,并没有进行其他的操作。这种文件也有两种去处
- 通过git add命令可以进入暂存状态
- 使用git checkout命令则丢弃修改过,返回到
Unmodify状态,git checkout命令就是从库中取出文件,覆盖当前的修改
- Staged:暂存状态
- 执行git commit将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为
Unmodify状态 - 执行git reset HEAD filename取消暂存,文件状态为
Modified
- 执行git commit将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为
查看文件状态
查看指定文件状态
git status [文件名]
查看所有文件状态
$ git status
添加所有文件到暂存区
git add .
提交暂存区的内容到本地仓库: -m提交信息
git commit -m "new file [文件名+扩展名]"
忽略文件
我们不需要把某些文件纳入版本控制中,如数据库文件、临时文件、设计文件等
在项目目录下建立.gitignore文件,此文件有以下规则
- 文件默认存放的是不上传的文件名
- 以空格或#开始的行为注释
- 星号(*)代表多个字符;问号(?)代表一个字符;方括号([])代表可选字符的范围;大括号({})代表可选的字符串
- 感叹号(!)代表不被忽略的规则和文件
- 名称前面的/,忽略上一级的文件下的文件,但该文件不会忽略
- 名称后面的/,忽略该文件夹下的文件
# 注释
*.txt #忽略所有.txt的文件
!lib.txt #但lib.txt除外
/temp #仅忽略上一级目录的文件,temp中的文件不忽略
build/ #忽略build下的所有文件
doc/*.txt #忽略doc文件夹下的所有.txt文件
- git对于.gitignore配置文件是按照从上到下进行规则匹配的,前面的规则范围更大,后面的规则就不生效
- 已经push了项目,那么再在.gitignore文件中写入新的过滤规则,也不会起作用,Git仍然会对所有的文件进行版本管理。此时可以从暂存区移出,在工作区保留:git rm -r --cached (文件名)
使用码云
gitub是有墙的,一般使用码云(gitee),公司有时候会搭建自己的gitlab服务器
-
创建gitee账号
-
设置本机绑定SSH公钥,实现免密码登录。码云是远程仓库,我们平时工作是在本地仓库
- 进入用户目录:
C:\Users\天马行空 - 输入ssh-keygen -o生成.ssh文件及公钥
- 已有.ssh文件夹,在文件夹中输入ssh-keygen生成公钥
- 进入用户目录:
-
生成完之后.ssh中出现两个文件id_rsa和id_rsa.pub
.pub是公共的,另一个是私钥,将公钥打开,粘贴到网址SSH公钥 - Gitee.com上并提交

-
使用码云创建一个自己的仓库
-
开源许可证GPL-2.0 、GPL-3.0开源是否可以随意转载,不能商业使用
-
将仓库克隆到本地
出现需要验证账号密码是因为项目是私有的
-
IDEA中集成Git
-
将项目从git远程仓库中下载到本地文件夹
-
新建项目,绑定git
- 在git本地仓库创建项目,项目名与本地仓库项目名相同
- 创建项目名不同的项目,然后将我们本地的git相关文件拷贝到该项目中即可

- 文件的颜色就是选中的状态,绿色:已提交;红色:未提交
-
修改文件,使用IDEA操作git
- 添加到暂存区
- commit提交
-
右上角有IDEA集成的git便捷操作
-
在IDEA上提交,可以点对勾,提交变更到本地文件,注意需要写提交信息,一般是说明变更的地方
-
也可以在终端中输入
git add .,git commit -m" "命令提交到本地
-
-
左下角的Git有git远程及本地仓库的全部信息
-
提交测试,push到远程仓库
输入命令
git push,就提交到了远程仓库
Git分支
master为主分支
dev开发用分支
v4.0不同版本的分支
git中常用的分支命令
-
列出所有本地分支
$ git branch -
列出所有远程的分支
$ git branch -r -
新建一个dev开发者分支,但仍然停留在当前分支
$ git branch dev -
新建一个4.0版本分支,并切换到该分支
$ git checkout -b v4.0 -
切换到主分支master
$ git checkout master -
将本地分支v4.0上传到远程
$ git push origin v4.0 -
删除本地分支
$ git branch -d v4.0 -
删除远程分支
# 直接输入分支名v4.0 $ git push origin --delete v4.0 # 分支在远程仓库的origin目录下,所以需要origin/+分支名 $ git branch -dr origin/dev -
合并指定分支到当前分支
# git merge 分支名如果多个分支并行执行,就会导致我们的代码不冲突,也就是同时使用多个版本
比如,一个项目部,要做一个web项目
web-api - A(编写了代码)
web-admin - B会调用A的代码(修改了A的代码)
web-app - C会调用B和A的代码
A编写了代码,B修改了A的代码并提交,A从远程获取的代码时,发现代码变了,就可以选择从哪个分支下载代码,也可以判断是否需要将B修改的代码提交到的分支 合并到 自己的分支
如果同一个文件在合并时修改的内容产生了冲突,我们可以在自己的分支上保留他的还是自己的
Git是一种分布式版本控制系统,用于管理文件、目录或工程的修改历史,支持多人协同开发。它有工作目录、暂存区和资源库三个工作区域,提供版本追踪、备份和恢复功能。Git与其他版本控制工具有所不同,如SVN,因为它不需要中央服务器,每个用户都有完整的代码库。Git的基本操作包括添加、修改和提交文件。Git还支持通过分支进行并行开发,解决合并冲突。

被折叠的 条评论
为什么被折叠?



