【狂神说Java】Git最新教程通俗易懂

P1 1、前言 之 版本控制
06:12
目录
版本控制
聊聊Git历史
git环境配置
git基本理论
git项目搭建
---------------
git文件操作
使用码云
IDEA中集成git
说明:git分支
版本控制 – 版本迭代 版本控制器
管理文件 修改历史、记录、备份
管理多人协同开发的项目技术
功能
实现跨区域多人协同开发
追踪和记载一个或多个文件的历史记录
组织和保护你的源代码和文档
统计工作量
并行开发、提高开发效率
跟踪记录整个软件的开发过程
减轻开发人员的福安,节省时间,同时降低认为错误
P2 2、Git和SVN的区别
07:38
本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人使用,如RCS
集中版本控制(集群) SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不联网的化,用户就看不到历史版本,也无法切换版本验证问题,或子啊不同分支工作。而且,所有数据都保存在单一的服务器上,由很大的风险这个服务器会损坏,这样就会丢失所有的数据,可以定期备份。
代表产品:SVN、CVS、VSS
需要定期备份
分布式版本控制 Git
每个人都拥有全部的代码 安全隐患
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,秩序在联网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况
Git VS SVN
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所有首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己昨晚的活推送到中央服务器。集中版本控制系统是必须联网才能工作,对网络带宽要求较高。
GIT是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,两人只需要把各自修改推送给对方,就可以互相看到对方的修改了。
git是目前世界上最先进的分布式版本控制系统。
Git可以直接看到更新了哪些代码和文件
P3 3、聊聊Git的历史
03:53
BitKeeper
P4 4、安装Git及环境配置
07:02
下载慢 —— 镜像下载
先卸载
环境变量
Git Bash:Unix和Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
P5 5、常用的Linux命令
08:06
cd 改变目录
cd.. 回退到上一个目录,直接cd进入默认目录
pwd 显示当前所在的目录路径
ls(ll) 都是列出当前目录的所有文件,只不过ll列出的内容更为详细
touch 新建一个文件 如:touch index.js就会在当前目录下新建一个index.js文件
rm 删除一个文件,rm index.js就会把index.js文件删除
mkdir 新建一个目录,就是新建一个文件夹
rm -r 删除一个文件夹,rm -r src删除src目录
mv移动文件,mv index.html src index.html是我们要移动的文件,src是目标文件夹,当然,这样写,必夹在同意目录下
reset 重新初始化终端 / 清屏
clear 清屏
history 查看命令历史
help 帮助
exit 退出
# 注释
右键 新建文件夹
在文件夹里打开 Git Bash Here
P6 6、Git的必要配置
09:09
多有的配置文件都保存在本地
$ git config -l
$ git config –system --list
$ git config –golbal --list
配置邮箱地址
$ git config –global user.name “zhangsan”
$ git config –global user.email “zhangsan@qq.com”
P7 7、Git的工作原理
07:56
Git本地三个工作区域:
Workspace 工作目录(平时放代码的地方)
Index / Stage 暂存区(文件。用于临时存放改动,保存即将提交到文件列表信息)
Repository 资源库(资源。安全存放数据的位置,要提交到所有版本的数据。其中HEAD指向最新放入仓库的版本)
+
Remote 远程的git仓库(托管代码的服务器,可以简单的认为是项目组中的一台电脑用于远程数据交换)
本地的三个区域确切的说应该是git仓库中HEAD 指向的版本
HEAD(隐藏文件)
Directory:使用git管理的一个目录,也就是一个仓库,包含我们的工作空间和git的管理空间
WorkSpace:需要通过git进行版本控制的目录和文件,这些目录和文件组成了工作空间
.git:存放git管理信息的目录,初始化仓库的时候u自动创建
Index / Stage:暂存区,或叫待提交更新去,在提交进入repo之前,我们可以把所有的更新放在暂存区
Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)
Stash:隐藏,是一个工作状态保存栈,用于保存 / 恢复QorkSpace中的临时状态
Git的工作流程
1 在工作目录中添加、修改文件
UserMapper.xml
2 将需要进行版本管理的文件放入暂存区域
git add .
3 将暂存区域的文件提交到git仓库
git commit
因此,git管理的文件由三种状态:
已修改(modified)
已暂存(staged)
已提交(committed)
P8 8、Git项目创建及克隆
05:34
命令
pull、fetch / clone、checkout、push、commit、add
创建本地仓库的两种方法:
创建全新的仓库
git init
克隆远程仓库 —— Clone
Github
Gitee
P9 9、Git的基本操作命令
09:18
· Untracked:未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add状态变为Staged
· Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果他被修改,而变为Modified。如果使用git rm移除版本库,则称为Untracked文件
· Modified:文件已修改,仅仅是修改,并没有进行其他的操作。这个文件也有两个去处,通过git add可进入暂存Staged状态,使用git checkout,则丢弃修改过,返回到unmodify状态,这个git checkout,即从库中取出文件,覆盖当前修改
· Staged:暂存状态。执行git commit,则将修改同步到库中,这时苦衷的文件和本地文件又变为一致,文件为Unmodify状态,执行git reset HEAD filename,取消暂存,文件状态为Modified
查看文件的状态
查看指定文件状态
git status [filename]
查看所有文件状态
git status
添加所有文件到暂存区
git add
提交暂存区中的内容到本地仓库 -m 提交信息
git commit -m "消息内容"
忽略不需要上传的文件
有时不把某些文件纳入版本控制中,如:数据库文件,临时文件,设计文件等
在主目录下建立“.gitignore”文件,此文件由如下规则:
1 忽略文件中的空行或以井号#开始的行将会被忽略
2 可以使用Linux通配符。
如:
*(代表任意多个字符)
?(代表一个字符)
[](代表可选字符范围)
{}(代表可选的字符串)
3 如果名称的最前面有一个!,标识例外规则,将不被忽略
4 如果名称的最前面是一个路径分隔符/,表示要忽略的文件在此目录下,而子目录中的文件不忽略
5 如果名称的最后面是一个路径分隔符/,表示要忽略的时此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
/ 的位置
在前面:往上走
先后面:往下走
*.class
*.log
*.lock
# Package Files #
*.jar
*.war
*.ear
target/
# idea
.idea/
*.iml
*velocity.log*
### STS ###
.apt_generated
.factorypath
.springBeans
### IntelliJ IDEA ###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/
*.log
tmp/
#rebel
*rebel.xml*
P10 10、码云的注册和使用
06:46
P11 11、配置SSH公钥及创建远程仓库
08:25
P12 12、IDEA中集成Git操作
12:44
1 新建项目,绑定git
将远程的git文件目录拷贝到项目中
2 修改文件,使用IDEA操作git
提交到暂存区
Commit提交到本地
Push到远程仓库
Commit提交信息
提交到本地

不检查 省时间

3 提交测试
快速提交:
git add .
git commit -m “文件名”
git push
P13 13、关于Git中分支说明
11:31
Master 主分支
· 新建一个分支,但依然停留在当前分支
git branch [brach -name]
· 新建一个分支,并切换到该分支
git checkout -b [branch]
· 合并指定分支到当前分支
git merge [branch]
· 删除分支
git branch -d [branch-name]
· 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
多个分支如果并行执行,会导致代码不冲突,
即同时存在多个版本
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,如发布,或dev分支代码稳定后可以合并到主分支master上。
P14 14、Git后续操作说明
05:16
Gitee页面下的导航栏 —— 用于学习(git命令、git下载)