【Git】开发相关

命令讲解:

git的四个组成部分:

  • 工作区(工作目录)
    • git add . 提交暂存区
  • 暂存区
    • git commit -m '注释' 提交历史仓库
    • git chechout 撤回
  • 本地历史仓库
    • git push origin master 提交远程仓库
      • origin 代表远程主机名标识
    • git chechout HEAD 撤回
  • 远程仓库
  • 具体可以看下图:

git和SVN的差异:

  • git
    • 协同开发比较号
    • 随着时间增加:同步增量的时候,不保存增量信息,只保存总的快照信息,通过指针去操作速度快
  • svn
    • 协同开发弱
    • 随着时间增加:增量保存,耗时慢

命令详解:

  • ls -la 查看隐藏文件
  • git -help add 查看帮助
  • git status 查看操作状态(红色是没有被提交)工作区
  • git add . 全部加入可以提交到暂存区域
  • git reset HEAD (file)
  • git commit -m '注释' 提交本地库
  • 三个区域概念
    • 本地库,暂存区,工作区
  • pull request(pr)
  • HEAD
    • 当前commit(类似记录)的引用,类似头指针
  • master
    • 默认的分支
    • git branch -v 查看远程分支
  • branch
    • 分支
  • git clone 把远端仓库的项目下载下来 
  • git checkout -b 【分支名字】 创建分支,并且切换到这个分支
  • git checkout master 切换分支
  • git branch -d [feature] 删除分支(假删除,是删除引用)
  • 什么是引用
    • 就是一个字符串就是一个hash值,使用SHA-1做的一个加密,所有的引用都是在.git目录中的
  • git push 提交远程仓库
  • 快照原理
    • commit会产生hash值(还有个树和树指针),有一个指针对指向一个区域(存的是原始信息文件),每一个文件也有一个hash值,通过hash值可以找到你的原始文件
  • 每一次commit提交,当前的快照parent(起源),指向的是上一版本的hash值
  • git回退操作
  • git reset -onto 目标 commit 起点commit 终点commit 版本回退
  • git reset -onto 第三个commit 第4个comit branch1分支
  • git reset --soft 本地库会移动一下回退上一版本,其他两个区域不变
  • git reset --mixed 本地库头指针下移动,重置暂存区,工作区不变
  • git reset --hard 全部区域下移动,重置 保持跟本地库一样
  • git reset --hard HEAD^ 后退一个版本
  • git reset --hard HEAD^^后退二个版本
  • git reset --hard 【hash值】******************最好使用这个
  • git reflog 查看移动版本的记录
  • ------------------------------------
  • git revert
  • 会增加一个新的分支,内容和回退的版本一样
  • ------------------------------------
  • git chechout
  • 覆盖原来的内容
  • git log 查看日志commit日志
  • git log --pretty=oneline 简单日志更漂亮
  • git log --oneline 更简单的命令
  • ^和~
  • ^是回退版本
  • ~可以加数字,回退几个版本 
  • 如图:

  • git rebase master 变基,找基点,把两条分支合并到一个基点
    • 变基过程
      • 建议不要轻易用
      • 这个会直接合并到基分支
  • git merge brabch1 多条分支还会存在的,只是合并了
    • 合并分支
    • 冲突解决:解决冲突,手动commit
    • commit--fast-forward 自动快速前进
  • git pull 底层就是用了 fetch merge
  • git commit --amend 在不添加commit记录的情况的,进行提交
  • git revert 使用后增加一条记录,reset 则不会。撤销 某次操作
  • git chechout 切换分支而已
    • chechout 不会移动分支指针的,reset是会的
  • git stash 临时存放工作目录的隐匿
    • git stash
    • git stash pop 回到暂存区,给弄回来
    • git stash -u
  • git强制覆盖:
    •     git fetch --all
    •     git reset --hard origin/master
    •     git pull

git开发流程协同作业(git flow):

git命名规范:

开发阶段:

开发新需求都从master拉取feature分支,不同迭代发布代码使用不同的分支,避免相互影响。需要进行开发环境联调的代码合并到develop分支,由jenkins自动发布到开发环境。

命名方式: dev-mmdd(时间)-需求名称,例如: dev-1205-xxxx

测试阶段:

每月为一个迭代周期由系统owner拉取提测分支test,并定期维护(merge master).开发feature分支合并到提测test分支,合并前需要由模块负责人进行review或交叉review.多个feature分支在测试过程中,需要借助release分支来进行合并,然后再进行提测。多个feature分支在测试过程中,某一个需求不能如期发布,需要将release分支删除,将可继续的分支重复执行第2步进行测试验证:

命名方式: test-mmdd(每月10日),例如: test-1215 / release-mmdd(每月10日),例如: release-1210

发布阶段:

测试通过后release进行merge master,并解决冲突,在release分支回归测试回归通过后,先在master分支拉取tag分支备份,然后把release合并到master.发布master

命名方式: tag-mmdd(时间),例如: tag-1212

以上就是使用一些git的心得,具体的内在原理还是需要大家看一下源码。有其他需要修改的希望大家告诉我,我在持续维护,也是给自己一个学习的机会。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞四海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值