Git基础教程
视频链接:【狂神说Java】Git最新教程通俗易懂_哔哩哔哩_bilibili
了解基本概念:版本控制
1.版本控制
1.1 什么是版本控制?
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
- 实现跨区域多人协同开发
- 追踪和记载一个或多个文件的历史记录
- 组织和保护源代码和文件
- 统计工作量
- 并行开发提高开发效率
- 跟踪记录整个软件开发的过程
- 减轻开发人员负担,节省时间,同时降低人为错误
简单来说,就是管理多人协同开发项目的技术.
多人开发,最好使用版本控制
1.2 常见的版本控制工具
- Git
- SVN
- CVS
- VSS
- …
目前Git的应用最为广泛
1.3 版本控制分类
1.本地版本控制
记录文件的每一次更新,可以对每一个版本做一个补丁记录文件,适合个人使用,如RCS
2.集中版本控制(SVN)
所有的版本数据都保存在服务器上,协同开发者同步更新或上传自己的修改.
一旦服务器崩了,就会出现单点故障问题,无法查看历史问题,所有文件就丢失了.
3.分布式版本控制(Git)
每个用户存储的都是所有的版本数据,只要一个用户设备没有问题就可以恢复所有的数据,但是增加了本地存储空间的占用.
4.Git和SVN的区别
SCN版本库放在中央服务器,工作的时候使用的是自己的电脑,所以首先从中央服务器得到最新版本,然后工作,结束后需要退送到中央服务器.集中式必须联网,对网络带宽要求比较高,
Git没有中央服务器,每个人电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上.协同的方法是这样的:如果在自己的电脑上修改了A,其他人也在电脑上修改了A,这时,你们俩之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了.
Git是目前最先进的分布式版本控制系统.
2.Git的历史
略过
3.Git环境配置
官网下载太慢,我们可以使用淘宝镜像:git-for-windows Mirror (taobao.org)
3.1 如何删除Git
在软件管理里删除,然后清除环境变量即可
3.2 安装Git
无脑下一步即可
选择文本编辑器
3.3 启动
在安装的地方打开即可(Git-bash) 其他的不用管 (操作风格类似Linux,推荐使用)
在任意地方右键即可打开
3.4 基本的Linux命令
- cd 改变目录
- cd … 回到上一级
- pwd 显示当前路径
- ls 显示当前文件夹中的所有文件,ls(||)列出更加详细的内容
- touch 新建一个文件
- rm 删除文件或者文件夹 带上 -rf 参数(递归删除)
- mkdir 新建文件夹
- mv 移动文件
- reset 初始化终端/清屏
- clear 清屏
- history 历史
- help 帮助
- exit 退出
- (#) 表示注释
3.5 Git配置
所有的配置文件都保存在本地 E:\work\Git\etc\gitconfig
查看git配置 git config -l
查看全局变量 git config --global --list
3.6 设置用户名和邮箱(必须)
必须配置的参数
准备工作到此结束
4.Git基本理论(核心)
4.1 工作区域
Git本地有三个工作区域:工作目录,暂存区,资源库.如果再加上远程git仓库就可以分成四个区域.文件在四个区域之间的转换关系如下.
- 工作区:平时存放代码的地方
- 暂存区:用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表的信息
- 仓库区(本地仓库):安全存放数据的位置,这里面有你提交的所有版本的数据.其中head指向最新放入仓库的版本.
- 远程仓库:托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换.
4.2 基本的工作流程
1.在工作目录添加或者修改文件
2.将需要进行版本管理的文件放入暂存区域;
3.将暂存区域的文件提交到git仓库
因此git管理的文件有三种状态;已修改( modified),已暂存(staged),已提交(commited)
5.Git项目搭建
5.1 创建工作目录与常用指令
工作目录一般就是你希望git来帮你管理的文件夹.可以是一个空目录,建议不要有中文.日常使用只要记住下图的六个命令
5.2 本地仓库搭建
创建本地仓库的方法有两种,一直是在创建全新的仓库,另一种是克隆远程仓库
1.创建全新的仓库,需要在Git管理的项目根目录执行
# 在当前目录创建一个Git代码仓库
git init
2.执行之后可以看到在项目文件夹里多出来一个.git文件,关于版本等所有的信息都在里面
5.2 搭建远程仓库
1.将远程服务器上的仓库完全镜像一份到本地
# 克隆一个项目和它的整个代码历史
git clone [url]
2.去gitee上进行测试
6.Git文件操作
6.1 文件的四种状态
-
Untracked:未跟踪,此文件在文件夹中,但是没有加入git库,不参与版本控制,通过git add 状态变为Staged
-
Unmodify:文件已经入库,未修改,即版本库中的文件快照内容和文件夹完全一致,这种文件有两种去处,如果被修改就变为Modified,或者就是使用git rm,成为Untracked
-
Modified:文件已修改,这种文件有两种去处,通过git add可以暂存变成Staged状态,使用git checkout,放弃修改,变为Unmodify状态
-
Staged:暂存状态,执行git commit则同步修改到版本库中,这时候,库中文件和本地文件一致,文件变为Unmodify状态,执行git reset HEAD filename取消暂存,文件状态变为Modified
6.2 查看文件状态
# 查看指定文件状态
git status filename
# 查看所有文件状态
git status
6.3 忽略文件
有时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
- 忽略文件中的空行和以#开头的行
- 可以使用linux通配符,例如: * 代表任意多个字符; ? 代表一个字符; [abc] 代表可选字符范围; {string1, string2, …} 代表可选字符串范围
- 如果名称前有一个! ,表示例外规则,不被忽略
- 如果名称的最前面是一个路径分隔符 / ,表示要忽略的文件在此目录下,别的目录下不受影响,并且子目录也不受影响
- 如果名称的最后面是一个路径分隔符 / ,表示要忽略的是此目录下改名称的子目录,而非文件
# 为注释
*.txt #忽略所有的txt文件
!lib.txt #但是lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其他的temp目录
build/ #忽略build下的所有文件
doc/*.txt #忽略doc/t.txt但是不忽略doc/test/tt.txt
一个示范
/bin/
*.txt
*.class
*.log
*.lock
# Package Files#
*.jar
*.war
*.ear
target/
# eclipse
.settings/
.classpath
.project
# idea
.idea/
*.iml
### IDEA ###
*.iml
*.ipr
*.iws
idea
.classpath
.project
.settings/
bin/
*.log
temp/
*.iml
*.ipr
*.iws
.gitignore
7.使用Gitee
1.注册码云,完善个人信息开源软件 - Gitee.com
2.绑定本机ssh公钥,实现免密码登录(重要)
# 进入C:/user/Administrator/.ssh 目录
# 生成公钥
ssh-keygen
3.将公钥信息public key添加到gitee账号中
4.使用码云创建一个自己的仓库!
8.IDEA中集成Git
-
新建项目,绑定git
-
先将一个项目在gitee上建好然后克隆到本地,然后将其中的信息拷贝到项目中
-
将远程的git文件目录拷贝到项目中即可
-
- 观察文件变化
- 修改文件,然后使用idea提交
-
可以对单个文件处理
-
提交(在Terminal面板指令操作,建议做法)
9.Git分支说明
git中常用的分支命令
# 列出所有的本地分支
git branch
# 列出所有的远程分支
git branch -r
# 新建一个分支,但是应然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch-name]
# 切换分支
git checkout [branch-name]
# 合并指定分支到当前分支
git merge [branch]
# 删除指定分支
git branch -d [branch-name]
# 删除远程分支
git branch -dr [remote/branch]
多个分支如果并行执行,就导致我们代码不冲突,也就是同时存在多个版本!
如果同一个文件在分支合并的时候都被修改了就会引起冲突:解决办法是我们可以修改冲突文件后重新提交!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作工作一般情况下在新建的dev分支,工作完后,等产品发布或者dev分支稳定后可以合并到主分支master上来.