Git 101 | 青训营笔记

229 阅读3分钟

这是我参与「第三届青训营-后端场」笔记创作活动的第3篇笔记。内容主要涉及Git的常用命令。

介绍

Git是集代码托管、代码智能、代码分析、持续集成、Cloud IDE等功能于一身的分布式代码版本控制管理平台,可以帮助研发高效地开发、管理代码。

学习Git的原因

  • 协同工作

业内大多数公司都是基于Git进行代码管理,熟练地使用Git是一个程序员的必备技能。

  • 开源社区

参与绝大多数开源代码都需要使用到Git,因为它们大多数都是基于Git维护的。

Git的基本使用

  • Git初始化

    • git init
  • Git配置

    • git config
    •   git config --global user.name "xxx"
    •   git config --global user.email xxx
    • git remote
    •   查看remote:git remote -v
    •   添加remote:git remote add origin <http/ssh项目地址>
  • 推送代码

    • git add
    • git commit
  • 远程同步

    • 拉取代码

      • git clone

      •     拉取完整的仓库到本地目录,可以指定分支和深度

      • git fetch

        •       将远端某些分支的最新代码拉取至本地,不会执行merge操作,如果需要和本地代码合并需要手动操作
      • git pull(远程合并到本地)

      •     拉取远端某分支,并且与本地代码合并,操作等同于git fetch + git merge

    • 推送代码

      • git push(本地合并到远程)

        • 将本地代码同步至远端

        • 冲突问题:当本地commit记录和远端的commit历史不一致,则会产生冲突。

        • 解决冲突

          • 产生原因:两个分支修改了同一个文件或者修改了同一个文件的文件名;两个分支修改了不同文件的部分不会产生冲突,可以直接合并。
          • 如果该分支仅仅自己一个人使用,或者与团队成员确认过修改历史,则可以通过git push origin master -f来完成强制推送。一般不推荐主干分支进行此操作。
          • 修改冲突代码后再合并(推荐)
        • 推送规则限制

          •         可以通过保护分支,来配置一些保护规则,防止误操作,或者一些不合规操作的出现,导致代码异常或者丢失。

Git研发流程

  1. 从原始分支(一般为master)中拉取代码,并新建feature分支,在此分支中进行开发
  1. 开发完成后创建一个feature分支到目标分支的Merge Request
  1. 开发团队内部审核通过后进行Merge操作

Git常用

  • 克隆单个分支

    • ZIP下载(不推荐)
    • git clone --branch dev --single-branch git@code.byted.org:ee/janus.git
  • 添加改动过的文件从工作区存至暂存区

    • git add readme.txt
  • 将暂存区变更提交至当前分支,同时带上message备注

    • git commit -m "change message"
  • 分支管理

    • 查看本地分支

      • git branch
    • 查看远程分支

      • git branch -r
    • 查看所有分支

      • git branch -a
    • 创建分支

      • git branch
    • 切换分支

      • git checkout
    • 创建并切换分支

      • git checkout -b
    • 合并某分支到当前分支

      • git merge
    • 删除分支

      • git branch -d
  • 初始化本地版本库

    • git init
  • 提交至远程库

    • git push origin dev
  • git上传代码至指定分支

    • 切换到分支

      1. git checkout -b dev
    • 将改动的文件提交到索引库(暂存区)

      1. git add *
    • 将暂存区提交至当前分支

      1. git commit -m "message"
    • 上传

      1. git push origin dev
  • git add . 和 git add * 区别 git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入