Git基础 | 青训营笔记

59 阅读3分钟

青训营 X Git

Git作为版本控制工具,在代码开发流程中必不可少,无论是回溯版本还是协作开发,都离不开Git。

基本使用

下面是一些基础的git功能与命令:

  • 配置
    • git config
    • got remote
  • 提交代码
    • git add
    • git commit
  • 远端同步
    • 拉取代码
      • clone
      • pull
      • fetch
    • 推送代码
      • push

在创建项目时,需要在项目目录下使用git init初始化项目,并根据需求设定初始分支等参数。初始化后,会在项目目录下生成一个.git目录,即git仓库目录。

git存在三种级别的配置文件,级别由高到低为:system、global、local,低级本的配置会覆盖高级别吧的配置。可以使用git config指令修改配置。

git remote是本地仓库与远端仓库的关联,支持https和ssh两种源。

如何对一个Origin使用不同的push和fetch URL(即拉取和推送的仓库不同)?

可以使用git remote set-url -add -push origin git@github.com: xxx/git.git命令

HTTP方式免密访问远端仓库时,密钥可以存储与内存(设置过期时间)和硬盘中,但是存在安全性问题。SSH方式密钥以证书形式存储在服务端,相对安全。

Objects

git中包含四种object: commit、tree、blob以及一种带tag的object。

Blob存储文件信息、Tree存储文件的目录信息、Commit存储提交信息(一个commit可以对应唯一版本的代码)。

Refs

Refs文件存储对应的Commit ID,因此可以把ref当作指针,指向对应的Commit来表示当前Ref对应的版本。

refs/heads前缀表示的是分支,refs/tags前缀表示的是标签

分支Branch一般用于开发阶段,不断添加Commit进行迭代;标签Tag表示一个稳定版本,指向的Commit一般不会变更

远端同步

拉取代码:

  • clone

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

  • fetch

    将某些远端的最新代码拉取到本地,不会执行merge操作,会修改refs/remote内的分支信息,如果需要和本地代码合并要手动操作

  • pull

    拉取远端某分支,并和本地代码进行合并,等同于git fetch + git merge;可以通过git pull --rebase完成git fetch + git rebase操作;可能存在冲突需要解决冲突。

rebase会将当前分支连接到master的最新commit上,可以保证提交记录的简洁,但是会影响记录本身,导致一些回溯问题。

推送代码:

一般使用git push origin master命令即可完成

实际研发流程

版本管理方式在实际开发中可以分为两种——集中式工作流和分支管理工作流。集中式工作流只在主分支上进行开发,虽然保证了主分支的整洁性但是场景相对局限。

分支管理工作流又可以分成三种:Git Flow(规则严格,流程复杂)、Github Flow、Gitlab Flow。

对于小型团队推荐使用Github Flow,提交最好少量多次。

小结

Git的知识不算难,但是设计很多具体操作,需要多加使用和练习才能掌握。学习好git的使用,参加开源项目也是一个不错的经验。


坚持学习,无限进步!