目录
1、版本控制
1)集中式(svn)
svn因为每次存的都是差异 需要的硬盘空间会相对的小一点 可是回滚的速度会很慢
优点:代码存放在单一的服务器上 便于项目的管理
缺点:服务器宕机: 员工写的代码得不到保障
服务器炸了: 整个项目的历史记录都会丢失
2)分布式(git)
git每次存的都是项目的完整快照 需要的硬盘空间会相对大一点
(Git团队对代码做了极致的压缩 最终需要的实际空间比svn多不了太多 可是Git的回滚速度极快)
优点:完全的分布式
缺点:学习起来比SVN陡峭
2、Git安装
3、 初始化配置
git config 命令来配置或读取相应的环境变量,这些环境变量决定了git在各环节的具体工作方式和行为。这些变量可以存放在以下不同的三个地方
- /etc/gitconfig文件:系统对所有用户都普遍适用的配置 命令:git config --syste操作系统
- ~/.gitconfig文件:用户目录下的配置文件只适用于该用户命令:git config --global当前用户
- .git/config文件:当前项目的Git目录中的配置文件 命令:git config 当前项目
一台操作系统可以有多个用户,一个用户可以有多个项目
项目配置的优先级最高 删除配置信息:git config --global --unset user.email
一般都使用--global
4、Linux基本命令
(1)区域:工作区(workspace) 暂存区 版本区
(2)对象:Git对象 树对象 提交对象
基础Linux命令
1)clear:清除屏幕
2)echo ‘’ : 往控制台输出信息 可用于创建文件
damu写入test.txt文件
3) 将当前目录下的子文件&子孙目录平铺在控制台
4)find 目录名:将对应目录下的子孙文件&子孙目录平铺在控制台
5)find 目录名 -type f:将对应目录下的文件平铺在控制台
6)rm 文件名:删除文件
7)mv 源文件 重命名文件:重命名
8)cat 文件的url:查看对应文件的内容 cat test.tx
9)vim 文件的url(在英文模式下)
a)按i 进插入模式 进行文件的编辑
b)按esc键+ :键 进行命令的执行
q! 强制退出 不保存
wq 保存退出
set nu 设置行号
c)yy 复制 p粘贴
10)tail -n [l] 文件名 :查看文件最后l行内容
5、初始化仓库
初始化新仓库(在工作区目录下运行Git Bash Here ):git init
.git目录 ll -a 查看隐藏文件
hooks:目录包含客户端或服务端的钩子脚本
info:包含一个全局性排除文件
logs:保存日志信息
objects:目录存储所有的数据内容
refs:目录存储指向数据提交对象的指针(分支
config:文件包含项目特有的配置选项
description:用来显示对仓库的描述信息
HEAD:文件指示目前被检出的分支
index:文件保存暂存区信息
git status 查看本地库状态
首次查看本地库状态:
6、添加暂存区
git add 文件名
warning:windows中的换行符为CRLF Linux中的换行符为LF 这里表示会换行符自动转换
"git rm --cached <file>”删除暂存区中的文件
7、提交本地库
将暂存区的文件提交到本地库形成自己的历史版本
git commit -m “日志文件信息” 文件名
查看本地库状态
查看日志信息 git reflog(精简版) git log (详细版)
8、修改文件 (模拟代码版本迭代)
修改文件后查看本地库状态
9、历史版本 版本穿梭
git reflog 查看版本信息
git log 查看版本详细信息
git reset --hard 要穿越到的版本号 版本穿梭 (通过指针调用)
此时查看文件为第一个版本文件
10、git分支操作
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。(分支底层是指针的引用)
.git/HEAD文件:HEAD指针指向分支
.git/refs/heads/master文件:master指针指向的具体版本
分支的好处:
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上
在hot-fix分支上修改文件
合并分支
1)正常合并
2)冲突合并
冲突产生的原因,两个分支在同一个文件的同一个位置有两套完全不一样的修改。 Git无法替我们决定使用哪一个,必须人为决定新代码内容。
手动合并分支
修改为要保存的内容
11、Git团队协作机制
(1)团队内协作
(2) 跨团队协作
12、 GitHub操作
远程仓库操作
- git remote -v 查看当前所有远程地址别名
- git remote add 别名 远程地址 起别名
- git push 别名 分支 推送本地分支上的内容到远程仓库
- git clone 远程地址 将远程仓库的内容克隆到本地
- git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新的内容拉取后与当前本地分支直接合并
a.创建别名
b.推送本地分支到远程仓库
c.拉取远程库代码
d.克隆远程仓库到本地
凭据管理器中删除git账号
克隆代码+初始化本地库
13、邀请加入团队
(1)团队内合作
修改代码
将其他成员加入团队
需要复制邀请地址 发给成员二
成员二在github页面的地址栏粘贴邀请地址
同意 婉拒
(2)跨团队合作
团队外的人访问git-demo 点击右上角fork 将代码叉入自己的远程库
团队内需要创建pull request
提交合并申请
14、SSH免密登录
C:\Users\10491 -----> Git Bash Here
ssh-keygen -t rsa -C git账号邮箱地址
C:\Users\10491\.ssh
复制公钥:cat id_rsa.pub
Git账号--settings 添加公钥
连接失败(未解决
15、配置Git忽略文件
1)为什么要忽略.idea中的xml文件
与项目的实际功能无关,不参与服务器上部署运行。把他们忽略能够屏蔽掉IDE工具间的差异
2)如何忽略
a.创建忽略规则文件xxx.ignore(前缀名随便起,建议为git.ignore)
这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在用户家目录下(C:\Users\10491)
需要忽略什么后缀的文件就写:*.后缀名
b.在.gitconfig中引入
16、定位Git程序(IDEA中)
创建Maven工程
setting---Version Control---Git 配置git安装路径C:\Program Files\Git\bin\git.exe
点击test出现 git版本信息则配置完成
17、初始化本地库
------>本地库中出现.git文件
提交本地库
代码修改后文件变蓝 代表追踪过 但有修改
18、查看版本信息
版本切换
19、创建&切换分支
(1)项目右击
(2)页面右下角master
切换分支
20、合并分支
(1)正常合并
(2)冲突合并
发生冲突,点击Merge手动合并
日志信息
21、 IDEA集成GitHub
(1)设置GitHub账号
settings生成口令(token)
(2)Push
注意:push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一样,push的操作是会被拒绝的。(push前先pull)
Git-->(失败
(3)pull拉取远程库到本地库 Git---pull
(4)clone克隆远程库到本地
22、国内代码托管中心 码云
码云是开源中国推出的基于Git的代码托管服务中心 网址:https://gitee.com/
IDEA集成码云 安装码云插件 settings-----plugins