Git学习 | 青训营笔记

124 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

Git的使用姿势与最佳实践

方向介绍

  • 代码托管
  • 代码智能
  • 代码分析
  • 持续集成
  • Cloud IDE: 开箱即用的云端开发环境

学习Git原因

  • 协同工作:团队合作时的必备工具
  • 开源社区:参与开源项目

课程目录

  1. Git是什么
    • 介绍版本控制的发展历史,为什么会出现Git
    • 介绍Git的发展历史
  2. Git基本使用方式
    • Git基本命令介绍
  3. Git研发流程
    • 依托代码管理平台Gitlab/Github/Gerrit介绍我们如何进行代码的开发以及团队合作

Git是什么

  • 分布式版本控制系统
    代码修改编辑的记录器,重要功能 回退 合并 等, 关注变更
  • 关于版本控制的发展与变更
    本地 > 集中 > 分布式
    RCS > SVN > Git
    • RCS:保存所有diff,即保存更改
    • SVN:服务器保存diff,需提前解决冲突
      • 优点:
        1. 学习简单,便于操作
        2. 支持2进制文件,对大文件友好
      • 缺点:
        1. 本地没有版本管理,必须连接服务器。。。
        2. 分支支持不友好,不利于大型团队合作
        3. 服务端若故障则会导致历史版本丢失
    • Git:
      1. 每个库均保存完整提交历史,可以完全本地操作
      2. 每次保存完整文件快照,不再只记录diff
      3. 可以和远端同步
      • 优点:
        1. 分布式开发
        2. 方便团队合作,多人协同
        3. 一般只添加,很少删除
      • 缺点:
        1. 操作相对复杂
        2. 对大文件支持不是很友好
          注:git-lfs工具可以弥补大文件功能

1.png

  • 常用平台

    • Github:全球最大的代码托管平台
    • Gitlab:全球最大的开源代码托管平台
    • Gerrit:Google开发的代码托管平台,代表开源项目——Android
  • 常用使用方式

    • 配置
      1. git config
      2. git remote
    • 提交代码
      1. git add
      2. git commit
    • 远端同步
      • 拉取代码
        1. clone
        2. pull
        3. fetch
      • 推送代码
        1. push
  • Git研发流程

    • 工作流
      1. 集中式工作流:只有主分支——Gerrit
      2. 分支管理工作流
    • 如何选择合适的工作流
      • 小型团队,使用Github
        1. 尽量保证少量多次,不要一次提交上千行代码
        2. 提交Pull Request后最少需要保证有CR再合入,即有更新之后再合入
        3. 主分支尽量保持整洁,使用fast-forward合入方式,合入前进行rebase,即使用最简单的合并方式,尽量减少冲突的发生
          • rebase 在合并分支前合并多次提交,减少提交次数,提高简洁度,尽量在推送前使用
      • 大型团队,根据实际需要选择

常见问题与命令

  1. 删除某一次提交记录,使用git rebase -i + 哈希地址 或者 tag ,但是删除后会出现冲突,需要根据命令行提示解决冲突,才能删除成功。
  2. git branch -a 查看本地以及远程分支
  3. git branch -d + 分支名 删除分支,但是需要先切出待删除分支
  4. git remote prune origin 同步远程分支到本地,用于远程仓库删掉分支后本地还存在的情况
  5. git checkout + 分支名 切换分支,vs code 直接点击右下角的分支即可,如下图: 1.png 但是需要注意的是,切换分支之前必须要在当前分支完成提交,可以不用完成同步,否则会覆盖当前分支。也可用于切换当前分支不同版本
  6. 使用vs code可以直接创建新的代码仓库,也能拉取已存在的代码仓库进行修改。也就是说创建一个代码仓库编写代码有两种方式,一种是在Github上创建,然后在本地clone对应代码仓库,开始工作。也能直接创建新文件夹,初始化git,编写好直接提交推送,如果不存在该仓库,则会自动创建,个人建议创建新的代码仓库,采用第二种,我认为更方便一些。
  7. 推送至Github时,经常会报错,因为连接不上了,等一段时间重试即可,暂时没有别的办法。设置代理可能能成功,还未尝试(前提是有vpn的情况下)。经过实际尝试,使用vpn设置代理可以解决推送不稳定的问题
  8. git config git本地设置命令
  • git config -e 设置当前仓库
  • git config -e global 设置全局配置,即所有仓库
  1. git reset 回退版本
  2. 大部分的git命令能实现的操作,vs code都能直接使用,如下图: 2.png 3.png

4.png

  1. 当有重要版本要发布之前,打上版本标记,标记功能在上图中,commit之后同步之前打上标记,标记如:v1.0
  2. 使用git进行工作时,首先创建自己的分支,在分支上工作,测试无误后再合并到主分支上
  3. git log --pretty=oneline 查看精简的日志
  4. git push origin :分支名 同步删除远程分支,注意:后无空格

附上git学习网站:

  1. 菜鸟教程

  2. git教程-廖雪峰

  3. vs code上git使用教程