文章目录
git常用命令
echo "#Description" > README.md, 添加一个文件
git status, 查看当前状态,发现有未跟踪文件
git add ., 当前目录所有文件添加到暂存区
git diff, 比较当前工作区和暂存区有何不同
git status, 查看当前状态,发现有文件未提交
git commit -m "注释", 把暂存区内容提交到本地仓库
git push -u origin master, 把本地仓库的提交推送到远程仓库
git log -2, 查看提交日志
git分支管理常用命令
git branch 显示所有分支
git branch b1 从当前分支创建一个叫b1的分支
git checkout b1 切换到b1分支
git checkout -b b1 相当于以上两条命令的组合
git checkout master 切换到master主分支
git merge b1 把b1分支的代码合并到master上
git branch -d b1 删除b1分支,不能在被删除分支上执行
命名规则
每次提交必须写明注释,如果是修复Bug,请加上Bug号
创建特性分支,名称要以f-开头,加上特性名
创建发布分支,名称要以r-开头,加上预发布版本号
创建Bug修复分支,名称要以b-开头,加上Bug号
创建标签,名称要以t-开头,加上发布版本号
合并分支时必须使用–no-ff参数,以保留合并历史轨迹
git分支说明
-
master 主分支,稳定代码,为生产环境做准备的
-
develop 开发分支,为开发服务(测试没有问题的代码最终会合并到master分支形成文档版本)
-
git的三个工作区域
1)工作区: 就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)
2)暂存区 : 暂存区就是文件夹 .git中的一个小部分(.git文件夹就是版本库)
3)版本库:工作区有一个隐藏目录.git,这个不属于工作区,这是版本库, 版本库中还有Git为我们
特性分支:feature (开发分支合并到dev分支)
注:从develop分支创建,用于特性开发,完成后要合并回develop分支。
操作过程:
git checkout -b feature-01 dev 从dev分支创建 feature-01 特性分支
git checkout dev 开发完成后,需要合并回dev分支,先切换到dev分支
git merge --no-ff feature-01 合并回develop分支,必须加--no-ff参数
git status 查看当前有哪些文件有冲突
git diff readme.txt 查看冲突文件详情
git add readme.txt 将解决冲突后的文件添加到暂存区
git commit -m "conflict fixed" 所有冲突解决后提交到版本库
git log --graph 查看分支合并图
git branch -d feature-01 删除特性分支
git push origin dev 把合并后的develop分支推送到远程仓库
冲突标记
# 比如在dev分支上,将特性分支 feature-01 合并到dev分支中
git merge --no-ff feature-01 # 执行此命令
<<<<<<< HEAD
Creating a new branch is quick & simple. # dev分支中的代码
=======
Creating a new branch is quick AND simple. # feature-01 中的冲突代码
>>>>>>> feature1
发布分支:develop
注:从develop分支创建,用于预发布版本,允许小bug修复,完成后要合并回develop和master。
操作过程:
git checkou -b release-1.2 dev 创建一个发布分支
git checkout master 切换到master分支,准备合并
git merge --no-ff release-1.2 把release-1.2分支合并到master分支
git tag 1.2 从master分支打一个标签
git checkou dev 切换到develop分支,准备合并
git merge --no-ff release-1.2 把release-1.2分支合并到dev分支
git branch -d release-1.2 删除这个发布分支
修复分支:bug
注;从master分支创建,用于生产环境上的Bug修复,完成后要合并回develop和master。
操作过程:
git checkout -b hotfix-1.2.1 master 从master分支创建一个Bug修复分支
git checkout master 切换到master分支,准备合并
git merge --no-ff hotfix-1.2.1 合并到master分支
git tag 1.2.1 为master分支创建一个标签
git checkout develop 切换到develop分支,准备合并
git merge --no-ff hotfix-1.2.1 合并到develop分支
git branch -d hotfix-1.2.1 删除hotfix-1.2.1分支
6,分支模型:整体流程
真实环境开发流程
自己创建django项目推送到仓库
django-admin startproject demo2
cd demo2 # 切换到项目路径
git init # 初始化这个本地git仓库
# git remote rm origin # 如有路径不一致可以先删除现有的路径
git remote add origin http://192.168.56.12/devopsedu/demo2.git #设置代码提交url路径
touch Readme # 新建一个项目文件(工作区)
git add . # 把工作区中所有变更全部提交到(暂存区)
git commit -m 'init' # 把暂存区代码提交到本地git仓库,只有提交到代码库才能被git管理(本地git仓库)
git push origin master # 将本地仓库的代码推送到线上仓库(线上git仓库)
# 代码回滚
git log #查看所有提交到仓库的版本记录: git log -2
git reflog #查看所有操作记录(状态的md5值和改变的值)
git reset --hard d9e0ed0 #回到指定版本(d9e0ed0是创建版本的MD5值得前6位或者7位)
git reset --hard HEAD^ #回到上一个版本
注:这样可以回到第一次提交到仓库的状态,但再使用git log看不到其他几次的md5值了
在本地创建一个dev分支,开发完成后合并到master分支
'''1. 从master分支切换到dev分支进行开发并推送到dev分支的过程'''
git checkout -b dev master # 从master分支创建dev开发分支
git branch # 可以看到现在已经切换到dev分支了
vim Readme # 模拟在项目中修改代码
git add . # 把工作区中所有变更全部提交到(暂存区)
git commit -m 'in dev' # 把暂存区代码提交到本地git仓库(本地git仓库)
git push origin dev # 把代码先推倒dev分支,让测试人员测试
'''2. 当测试人员测试完成后将dev分支代码合并到master形成文档版本'''
git checkout master # 开发完成后,需要合并回master分支,先切换到master分支
cat Readme # 可以看到master分支的内容没有修改
git merge --no-ff dev # 将刚刚dev中修改的代码合并到master
git push origin master # 将本地仓库的代码推送到线上仓库(线上git仓库)
只有master分支情况下(一个人负责维护项目)
git clone git@gitee.com:xiaonqedu/daily1904.git
vim test.txt # 工作区(本地的仓库)
git add . # 当前修改是在暂存区(本地仓库)
git commit -m '0514' # 把暂存区的代码永久保存到 版本库中,这样代码就不会丢失(本地版本仓库)
git log -2 # 查看最近两次的版本号,以便回归
# 回滚
git reset --hard 41e1efb # 回滚到任意版本
git reflog #查看所有操作记录(状态的md5值和改变的值)
# 把本地真正开发的代码提交到线上代码仓库
git push origin master # 此时代码才会更新到线上的代码仓库
多人协同开发,一般有master分支和dev分支
-
master 主分支,稳定代码,为生产环境做准备的
-
develop 开发分支,为开发服务(测试没有问题的代码最终会合并到master分支形成文档版本)
git clone git@gitee.com:xiaonqedu/daily1904.git
git branch # 查看当前所在分支
git checkout -b dev master # 从master分支切换到了dev分支
vim test.txt # 模拟开发过程
git add .
git commit -m 'dev0514' # 把代码提交到了本地dev分支上
# 切换到master分支
git checkout master
# dev分支是一个开发分支,如果测试发现没有问题,需要把dev分支代码合并到master分支,形成最终稳定版本
git merge dev # 把dev分支中的代码合并到master中
git push origin master # 把本地仓库中master代码推送到线上