分布式版本控制Git
-
由Linux作者编写
-
是一个开源的分布式版本控制软件
-
可以有效 , 高效的处理从很小到非常大的项目版本控制
-
允许多个开发人员在同一个代码库上进行协作,而不会产生冲突。
-
Git通过使用分支和提交历史记录来管理代码的版本。
Git安装
- 使用yum安装Git
yum -y install git
- 查看git版本
git --version
- 查看git帮助信息
git --help
- 更改中文系统显示 :
yum -y install langpacks-zh_CN
vim /etc/locale.conf
—>LANG="zh_CN.UTF-8"
reboot
- 更改中文系统显示 :
Git基础概念
-
工作区(Workspace)
- 存放从仓库中提取出来的文件的地方 , 放在磁盘上供你使用或修改
-
暂存区(Index/Stage)
- 一个文件 , 索引文件 , 保存了下次将提交的文件列表信息
-
仓库(Local Repository)
- 保存所有数据的地方 , 这里有提交所有版本的数据
.git
隐藏目录
-
远程仓库(Remote Repository)
- 托管代码的地方 , 可供其他人浏览 , 下载代码的服务器
Git工作流程
Git常用子命令
-config
//修改git配置-init
//初始化本地仓库-add
//添加修改到暂存区-commit
//提交修改到本地仓库-status
//查看当前状态-clone
//将远程服务器的仓库克隆到本地-push
//提交修改到远程服务器--local
//仓库级--global
//全局级--system
//系统级
Git基础配置
-
设置用户名
git config --global user.name mark
-
设置用户邮箱
git config --global user.email mark@tedu.cn
-
设置版本库默认分支
git config --global init.defaultBranch master
-
查看已有Git配置
git config --list
-
查看Git配置持久化文件
less ~/.gitconfig
Git创建版本库(仓库)
-
Git初始化空版本库
git init myproject
- 与目录下创建
myproject
工作区 ls -a myproject/
//查看工作区下的所有内容ls -a myproject/.git
// 查看工作区下的隐藏目录 --> 仓库
- 与目录下创建
-
将已有目录制作成版本库
- 创建空目录/工作区
mkdir mytest
- 移动到目录下进行制作
git init
- 查看仓库
ls -a /mytest/.git
- 创建空目录/工作区
Git仓库操作
cd myproject/
文件状态 无文件
+.md ---->未跟踪
+add ----> 要提交
+commit ----> 已提交
-
查看Git本地仓库状态
git status
-
创建README文件
echo "Learning Git" >> readme.md
-
将文件信息添加到暂存区
git add readme.md
git add .
表示变化了的文件(新版本)添加到暂存区
-
将暂存区文件提交到本地仓库
git commit -m "add readme"
- 返回
hash值/Git管理码
:[master(根提交) 295f61c] add README
- 返回
-
查看已上传在本地Git残酷的版本
git log
--oneline
- 回馈 上传记录
- 添加新记录时 , 新的版本在上面
生成新版本
echo 123 > readme.md
git add readme.md
/git add ./
git commit -m "done readme
Git指针操作
- Head指针是一个可以在任何分支和版本移动的指针
- 通过移动指针可以将数据还原至任何版本
- 先使用
log
指令查看版本信息 , 获取指针git log --oneline
- 使用reset子命令回滚到指定版本
git reset --hard 哈希值
reset --soft
//缓存区和工作目录不受影响 . reset后分支和HEAD指针移动到指定的commit,代码文件内容和reset之前一样,修改部分已加入到暂存区。通常用于重新提交。reset --mixed
//工作目录不受影响.reset后分支和HEAD指针移动到指定位置,代码文件内容和reset之前一样,修改部分未加入到暂存区。(需要重新执行git add)reset --hard
//工作目录 , 缓存区受影响.reset后分支和HEAD指针移动到指定commit,代码文件内容回退到指定commit,工作空间为clean状态。通常用于获取指定版本的代码文件.- 指针指向旧的记录 , 旧记录之上的记录不再在
log
命令下显示 - 使用
reflog
可以显示HEAD指针的移动轨迹 , 显示全部记录
Git分支
分支的基本概念
- 分支可以让开发分多条主线同时进行 , 每条主线互不影响
- 按功能模块分支 , 按版本分支
- 分支也可以合并
- 分支与HEAD指针的关系 :
- 创建分支的本质是在当前提交上创建一个可以移动的指针
- 根据HEAD指针判断当前分支
- **常见的分支规范 : **
MASTER分支
: Master是主分支 , 是代码的核心DEVELOP分支
: Develop最新开发成果的分支RELEASE分支
: 为发布新产品设置的分支HOTFIX分支
: 为了修复软件BUG缺陷的分支FEATURE分支
: 为开发新功能设置的分支
管理多分支
- 查看当前分支 :
git status
git branch -v
- 创建分支 :
git branch develop
git branch release
- 切换分支 :
git checkout develop
- 合并分支 (合并前需要切换到master主分支) :
git chechout master
git merge develop
- 解决分支冲突
- 查看有冲突的文件
cat a.txt
- 直接修改有冲突文件 , 修改为最终需要的文件内容
vim a.txt
- 修改完成后 , 正常add , commit提交 , 解决冲突
git add ./
git commit -m "resolve"
- 查看有冲突的文件
- 删除分支 :
git branch -d 分支名
Git标签
- TAG标签 :
- 标签用于标记某一提交点 , 唯一绑定一个固定的commitID , 相当于为这次提交记录指定一个别名 , 方便提取文件
- 可以为重要的版本打上标签 , 标签可以时一个对象 , 也可以是一个简单的指针 , 但是指针不会移动
- 使用
tag
子命令打标签git tag v1
- 查看标签
git tag
, 回馈v1
- 删除标签
git tag -d v1