01 Git 学习 | 青训营笔记

46 阅读3分钟

1. 什么是版本控制

一种记录一个或若干文件内容变化,以便将来查询特定版本修订情况的系统。

2. 为什么需要版本控制

需要更好的关注变更,了解每个版本的改动是什么,方便对改动的代码进行检查,预防事故发生;便于随时切换到不同的版本,回滚误删误改的问题代码。

3. 版本控制代表软件

本地版本控制

  • 方式:通过本地复制文件夹,来完成版本控制,一般可以通过不同的文件名来区分版本
  • 代表性工具:RCS
  • 解决的问题:本地代码的版本控制

集中式版本控制

  • 方式:
    1. 提供一个远端服务来保存文件,所有用户的提交都提交到该服务器中
    2. 增量保存每次提交的Diff,如果提交的增量中和远端显存的文件存在冲突,则需要本地提前解决冲突
  • 代表性工具:SVN
  • 解决的问题:提供一个远端服务器来维护代码版本,本地不保存代码版本

分布式版本控制

  • 方式:
    1. 每个库都存有完整的提交历史,可以直接在本地进行代码提交
    2. 每次提交记录的都是完整的文件快照,而不是记录增量
    3. 通过Push等操作来文成和远端代码的同步
  • 代表性工具:Git
  • 解决的问题:每个仓库都能记录版本历史,解决只有一个服务器保存版本的问题

4. Git是什么

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件

5. Git的基本使用方式

配置命令

  • git config
    • 常见的Git配置
      1. 用户名配置

        git config --global user.name "aaa"

        git config -- global user.email aaa@bb.cc

      2. InsteadOf配置

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

      3. Git命令别名配置

        git config --global alias.cin "commit --amend --no-edit"

  • git remote

提交代码

  • git add
  • git commit

远端同步

  • 控制代码
    • git clone
      • 拉取完整的从库到本地目录,可以指定分支,深度
    • git pull
      • 拉取远端某分支,并和本地代码进行合并,操作等于git fetch + git merge
      • 也可以通过git pull --rebase完成git fetch + git rebase操作
      • 可能存在冲突,需要解决冲突
    • git fetch
      • 将远端某些分支最新代码拉取到本地,不会执行merge操作
      • 会修改refs/remote内的分支信息,如果需要和本地代码合并需要手动操作。
  • 推送代码
    • git push
      • 常用命令:git push origin master
      • 冲突问题:如果本地的commit记录和远端的commit历史不一致,则会产生冲突,比如git commit --amend或者git rebase都有可能导致这个问题;如果该分支就自己一个人用,或者团队内确认可以修改历史则可以通过git push origin master -f 来完成强制推送,一般不推荐主干分支进行该操作,正常对应该解决冲突后再进行推送。
      • 推送规则限制:可以通过保护分支,来配置一些保护规则,防止误操作,或者一些不合规的操作出现,导致代码丢失。