Git版本控制与命令 | 青训营笔记

142 阅读3分钟

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

课程资料

为啥会Git很重要呢?

Git在日常使用和研发中的常见问题

  1. 按照文档进行Git配置,但拉取代码后配置依旧有问题,不会自己排查和解决问题
  2. 研发中进行一些异常操作,不符合规范,不清楚一些保护开发中不同版本代码的Git方法,例如建立分支、merge、pull request等。

Git的使用群体

  1. 业界的各大公司
  2. Open-Source Community 这两个研发最活跃的群体中,绝大部分都使用Git做代码管理,可见学习Git有多重要!

Git是一个版本控制系统(Version Control System, VCS)

下面介绍一下版本控制的三种基本类型:

  1. 本地版本控制:本地代码的版本控制,代表工具RCS
  2. 集中式版本控制:提供一个远端服务器来控制代码版本,本地不保存代码版本,解决多人协作问题,代表工具SVN
  3. 分布式版本控制:每个仓库都记录版本历史,解决只有一个服务器保存版本的问题

Git配置命令

下面将我不是很熟悉的git配置命令整理一下:

Git目录

项目初始化的命令:git init
它有几种不同的参数,例如:

  • --initial-branch 初始化的分支
  • --bare 创建一个裸仓库(纯Git目录,无工作目录)
  • --template 通过模板来自定义Git目录

git config

git config 有不同级别的配置,分别为global(全局),system(系统)和local(局部)。遇到重复配置则低级别覆盖高级别
下面来看一些例子:

  • 用户名配置
    • git config --global user.name "xxxx" 设置git用户名
    • git config --global user.email email_addr 设置git电子邮箱
  • instead of 配置
    • git config --global url.git@github.com:.insteadOf github.com 用instead of前面的链接去替换后面的链接,这里用git协议替换掉http协议
  • git命令别名配置
    • git config --global alias.cin "commit --amend --no-edit" 这样设置之后,原来“commit --amend --no-edit”这样一长串参数则可通过输入一句简单的“cin”即可实现

git remote

通过git remote可以获取并实现本地和远端仓库的关联

  • 查看remote:git remote -v
  • 添加remote:
  • 同一个origin设置不同的fetch和push url
    • 一个仓库可以有多个remote
    • 具体命令(ex.改push url):git remote set-url --add --push origin git@github.com:MY_REPOSITORY/git
    • 这样设置之后,我们可以从没有权限的仓库fetch代码,push到我们有权限的仓库 github会通过ssh和http协议使本地与remote端进行通信,而这两种协议都需要对身份进行验证。为了不反复输入密码,我们可以通过以下命令来配置一下免密的认证方式:
  • 为http remote配置免密
    • url: github.com
    • 内存:git config --global credential.helper 'cache --timeout=3600'
    • 硬盘:git config --global credential.helper "store --file /path/to/credential-file"
    • 将秘钥信息存在指定文件中的格式:(scheme)://(scheme)://(user):$(password)@github.com
  • 为ssh remote配置免密
    • url: git@github.com:git/git.git
    • ssh可以通过公私钥的机制,生成公钥存在服务端来实现免密访问
    • 目前的key默认使用rsa,但优先推荐使用ed25519
    • 命令为:ssh-keygen -t -C "your_email@example.com",秘钥默认存在~/ssh/id_ed25519.pub目录下

小结

这篇笔记主要总结了“Git的正确使用姿势与最佳实践”一课里版本控制和git配置相关的内容。通过复习本笔记可帮助我更深入地了解Git的原理与使用。