git版本控制

目录

gitee为例:

拉取代码,分支,文件操作

目录

gitee为例:

拉取代码,分支,文件操作

分支合并,提交上线的流程:

多人协作代码冲突场景及解决办法:

代码回滚:

git rebase 的原理及 merge 的区别:

cherry-pick 的原理及使用:

删除命令:


分布式Git :指网络中的计算机各自有一套独立的数据副本,不依赖于某一台计算机

集中式SVN:指数据都集中存储于某一台计算机,网络中的其他计算机都依赖于它

分布式优点:

1. 即使某一个终端的数据丢失,也可以进行数据的还原

2. 可以在无网络的环境下进行版本的创建,修改。

3. git 速度快,跟其相关的开源社区十分活跃,整个生态比较健康

常用的代码托管平台(开源的思想)(网站)(服务器):Github,Gitlab,Gitee

安装git:进入git 官网进行下载;

命令行查看安装版本: git --version

gitee为例:

生成添加SSH公钥:ssh-keygen -t ed25519 -C "x@qq.com"

查看:cat ~/.ssh/id_ed25519.pub

测试:ssh -T git@gitee.com

测试成功:

打开项目根目录:

检查项目状态:git status

处理,所有的文件添加到暂存区: git add .

在本地提交: git commit -m add "add files"

再检查状态:处于主分支,工作目录干净

 上传到码云:

>git remote add origin https://gitee.com/liuyu_33789/xxx.git

本地仓库关联云端仓库:

>git push -u origin "master"

刷新页面 即可看到代码

基本的LUNIX命令:

  • ls 展示当前目录下的子文件和子文件夹
  • pwd 展示当前所在的路径
  • mkdir 创建一个子文件夹
  • touch 创建文件
  • cd 进入某个目录
  • cd .. 回退到上层目录
  • cp 拷贝某个文件 cp a.js aa.js,拷贝目录加 -r , cp -r adc/ aaddcc
  • mv 移动某个文件 mv a.js abc ,移动a.js 到abc 这个文件夹下面
  • mv a.js aa.js 重命名a.js 为aa.js
  • r m 删除某个文件,加 -r 删除目录:rm -r aabbcc
  • cat 查看文件的内容:cat b.js 查看b.js
  • more 分页查看跟cat 差不多: more more.js,字母b是上一页,空格下一页,q退出
  • vim 编辑某一个文件,按esc 退出编辑,wq保存修改推出
  • oh my zsh

拉取代码,分支,文件操作

拉去代码:在命令行中进行克隆: git clone url

分支:

 分支常见的命令:

  •  查看分支:git branch,远程分支:git branch -a,git status 也可以查看
  • 创建分支:git branch liuyu 或者 git checkout -b xiaoyu,不仅仅创建而且切换到新创建的分支上
  • 切换分支:git checkout name
  • 删除分支:git branch -d xiaoyu ,-D是强制删除 

暂存区,工作区,版本库:

管理文件:

  • 将文件的添加操作/修改/删除 添加到暂存区,即修改了之后就需要添加:git add .
  • 将暂存区的文件信息提交到本地版本库:git commit -m "含义" ,一步到位直接到版本库:git commit -am "modify",如果是第一次发布还是需要先add
  • 查看提交记录:git log
  • 不被git 管理的文件:.gitignore,意思是告诉git 请忽略这些文件
  • 撤回还未提交到暂存区的文件:git checkout file/.
  • 撤回已经提交到暂存区的文件:git reset head file/.
  • 撤回已经提交到版本库的文件(软):git reset --soft head^
  • 直接撤回到上一版本(硬):git reset --hard head^

分支合并,提交上线的流程:

基于Gitlab 的常见的工作流的形态:

  • 不同的公司其工作流都有可能不一样
  • 涉及到常用的分支:
    • master 主分支
    • develop 日常开发分支
      • feature 功能分支 feature/liuyu/20210824
    • release 预发布分支 release/3.0
    • hotfix bug 修复的分支 hotfix/liuyu/20210824

开发及上线的流程:

  1. 拉取 develop 分支,创建 feature 分支
    1. 创建并与远程的 develop 分支关联 git checkout -b develop origin/develop
    2. 拉取远程的develop 分支,并于当前本地的分支进行合并: git pull origin develop
    3. 创建feature 分支开始干活:git checkout -b fearure/liuyu/20220621
    4. 提交上去:git commit -am "modify a.js"
    5. 将本地的分支 push到gitlab 上面去:git push origin feature/liuyu/20220621:feature/liuyu/20220621
  2. 提交 feature 分支到 gitlab,提交合并请求到 develop
    1. 将本地的分支 push到gitlab 上面去:git push origin feature/liuyu/20220621:feature/liuyu/20220621
    2. 合并到 develop 实在gitlab 中
    3. 在gitlab 中创建一个 merge requests
    4. 目标分支target branch 改为 develop,默认是main
  3. 测试有问题,继续在原先分支提交
    1. 继续在原分支上修改:
    2. 提交到本地分支:git commit -am "modify"
    3. 提交到远程,不用加 ' : ':git push origin feature/liuyu/20220621
    4. 再继续再gitlab 上操作
  4. 从 develop 分支创建 release 分支:
    1. 切换到develop分支上:git checkout develop
    2. 拉取远程的develop 分支最新的代码:git pull origin develop
    3. 创建一个release 分支:git checkout -b release/3.0.0
    4. push 到gitlab 上:git push orgin release/3.0.0:release/3.0.0
  5. release 分支测试有问题,从release 分支上拉取bug 修复分支
  6. 提交release 分支到 main 分支的和并请求,同时也合并到 develop
  7. 给main 分支打 tag 并提交发布
    1. git checkout main
    2. git status
    3. git pull origin main
    4. 打tag:git tag 20220621_1
    5. push 上去: git push origin 20220621_1:20220621_1
  8. 线上有问题,从main 拉取bug 修复bug 修复分支,后直接提交到main(同时到develop)

多人协作代码冲突场景及解决办法:

 

1. 先拉取:git pull origin develop

2. 切换到当前修改的分支:git checkout feature/liuyu/20220621

3. 手动合并到 develop:git merge develop

 4. git status

 5. 返回到代码里

 6. 找到冲突是谁 

 7. 提交到版本库:git commit -am "merge"

 8. 再次提交:git push origin feature/liuyu/20210621

代码回滚:

场景: 快速,稳健,紧张

不适用reset进行回滚:

1. reset 会直接操作了master 主分支

2. 手动操作代码的方式是有流程风险的

建议再在 gitlab 上用revent 来回滚:点击revent

修改后再push: 不能push 需要在进行依次revent

git rebase 的原理及 merge 的区别:

  • merge 按照时间顺序,最后会生成merge 版本节点:git merge develop
  • 默认情况下当前分支如果落后于对方分支,合并之后不会生成新的merge 版本节点
  • 使用 --no-ff ,这个参数则一定和=会生成merge 版本节点 ,git merge liu/04 --no-ff

  •  rebase:重新设立起点: git rebase develop
  • 会保持自己的版本顺序,不会生成merge 版本节点
  • 冲突的解决
    • git add 之后不用 commit ,用 git rebase --continue

  rebase 处理冲突:提交到暂存区之后,最后不同commit 提交,用:git rebase --contine

cherry-pick 的原理及使用:

cherry-pick前:

 cherry-pick后:

  •  cherry-pick 获取其他分支上某个版本节点到自己版本的节点
  • 目标版本不会减少
  • 冲突的解决
    • git add 之后不使用 commit 使用git cherry-pick --continue

删除命令:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值