Git | 青训营笔记

42 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

代码托管

负责管理公司内数十万的代码仓库,并在这之上对代码管理的相关功能进行迭代,提升研发活动的效率及质量

代码智能

提供更准确高效的代码搜索能力和代码导航能力,支持多种场景下的代码跳转,帮助用户更高效的去阅读代码

代码分析

提供一种代码检查能力,目的是在整个研发流程中自动的发现并反馈代码中存在的代码结构、代码漏洞、代码风格等问题

持续集成

一种软件开发实践,团队成员频繁将他们的工作成果集成在一起。每次提交后,自动触发运行一次包含自动化验证集的构建任务,以便能尽早发现集成问题

Cloud IDE

一个开箱即用的云端开发环境,支持 node/python/go/iava/c++ 等多种编程语言你可以在云端开发环境中编写、编译、运行和调试你的项目

协同工作

业界绝大多数公司都是基于 Git 进行代码管理,,因此 Git 是一个程序员的必备技能

开源社区

目前绝大多数的开源项目都是基于 Git 维护的,参与这些项目的开发都需要使用 Git.

Git命令

配置

git config

git remote

提交代码

git add

git commit

远程同步
  • 拉取代码

    • clone
    • pull
    • fetch
  • 推送代码 push

项目初始化

mkdir study

cd study

git init

其他参数

常见的Git配置

用户名配置

git config --global user.name “liaoxingju' git config --global user.email liaoxingju@bytedance.com

instead of配置

git config --global url.git@github.com.insteadOf github.com/

Git 命令别名配置 git config --global alias.cin "commit --amend --no-edit'

Git Remote
免密配置
  • SSH 可以通过公私钥的机制,将生成公钥存放在服务端,从而实现免密访问
  • 目前的 Key 的类型四种,分别是 dsa、rsa、 ecdsa、 ed25519默认使用的是 rsa, 由于一些安全问题,现在已经不推荐使用 dsa 和 rsa 了,优先推荐使用 ed25519
  • ssh-keygen -t ed25519 -C" your email@example.com” 密钥默认存在 ~/.ssh/id ed25519.pub
Git Add

git add readme.md

Git Commit

git commit -m “add readme"

Objects

commit / tree / blob 在 git 里面都统一称为 Object,除此之外还有个 tag 的 object.

Blob

存储文件的内容

Tree

存储文件的目录信息

Commit

存储提交信息,一个 Commit 可以对应唯一版本的代码

  • 通过 Commit 寻找到 Tree 信息,每 Commit 都会存储对应的 Tree ID

  • 通过 Tree 存储的信息,获取到对应的目录树信息

  • 从 tree 中获得 blob 的 ID,通过 Blob ID 获取对应的文件内容

Refs

  • refs 的内容就是对应的 Commit ID因此把 ref 当做指针,指向对应的 Commit 来表示当前 Ref 对应的版本

  • 不同种类的 ref refs/heads 前缀表示的是分支,除此之外还有其他种类的