Git使用指南


本人之前使用的版本控制工具是SVN,最近换成了Git,总结一下Git过程的使用经验,总结教训。

版本控制工具历史

  1. 版本控制工具起源:diff和patch
  2. 最早的本地版本控制工具:RCS(Revision Control System)
  3. 集中式版本控制工具:
  • SVN(Subversion):用于取代CVS(Concurrent Versions System)的更好用的版本控制系统。不适合跨地域的协作式开发,不适合对代码高质量追求和代码门禁,其操作依赖服务器,可以用于word这类二进制文件的版本控制,适合人数不多的项目。
  1. 分布式版本控制工具:
  • Git, 2005年诞生。Git不适合word这类二进制文件的版本控制,由于需要整体的读授权,其不能将读授权精细到目录级别。适合分布式开发和移动办公。Git和其他版本控制工具的主要差别在于Git对待数据的方式。其他版本控制工具记录的是差异,而Git记录的是快照,即把数据看做是对文件系统的一组快照。提交和保存项目,Git会对当时的全部文件制造快照并保存快照索引。Git在实际使用中,主要用于对代码仓代码进行管理。
  • TortoiseGit:Windows系统下的开源Git图形化操作工具。TortoiseGit支持多种语言, TortoiseGit下载链接:https://tortoisegit.org/download/#Language_Packs

Git安装配置

  1. Linux安装:两种安装方式(包管理器安装和源代码安装)
  • 包管理器安装命令如下(以Ubuntu为例):
    sudo aptitude install git (必装软件包)
    sudo aptitude install git-doc git-svn git-email gitk (依赖不同,需要单独安装)
  • Linux可以通过bash-completion软件包实现命令补齐功能,具体设置可以看Git安装及使用
  1. Windows安装:Git官方网站下载安装和安装GitHub Desktop(包含图形化和命令行版本的Git)
  2. macOS安装: macOS Git安装程序
    Git安装后一般还需要配置,才能和代码仓配合,用于代码的版本管理,该配置比较繁琐,配置时建议和有经验的人一起弄,配置好后一般不需要再改动,为防止遗忘,建议配置过程整理文档保存。

配置设置

  1. 配置分类:系统配置(–system)、用户配置(–global)和仓库配置(–local),查看配置命令:git config
  2. 配置流程:配置个人身份(用户名和邮箱)->换行符文本配置(重点在于不同系统之间的差异)->文本编码配置(使用UTF-8编码)->服务器认证配置(一般是线上代码仓,协议认证方式和公钥),配置详情请看Git安装及使用

Git概念

区域和状态 中文名称 英文名称 用途
工程区域 工作区 Working Directory 日常使用文件所在文件夹
工程区域 暂存区 stage 索引,在工程根目录.git/index文件夹中
工程区域 版本库 Repository 本地仓库,工作区中隐藏的目录文件夹.git,用于存放工程所有版本数据
文件状态 已修改 modified 修改文件,文件未提交保存
文件状态 已暂存 staged 已修改文件已放在将要保存的清单中
文件状态 已提交 committed 文件已保存在本地数据库中

Git常用命令字典

用途 命令 解释
工程准备 git init 项目名或工程名 在本地目录下自动生成名为.git的目录,做为项目仓库。当前项目所在目录纳入Git管理,.git目录默认不可见
工程准备 git clone url链接 / git lfs clone url链接 将远端工程或项目克隆到本地磁盘,使用前提是要有该工程或项目的查看下载权限
工作区查看 git diff 文件名 文件名 比较项目中任意两个节点/分支/索引的差异,在diff后添加–name-status参数,可以查看文件列表
工作区查看 git status 查看工作目录和暂存区状态,change to be committed(已暂存)、changes not staged for commit(未暂存)、untracked file(未被跟踪)
新增文件到暂存区 git add文件名 如果文件未被git跟踪,则需要先执行git add后,文件添加到暂存区后,再执行提交
删除在暂存区的文件 git rm 文件名 将文件从当前分支的暂存区中删除,也可理解为从当前分支的下一步提交快照中删除,删除后文件将脱离git跟踪,不受git工程管理
文件移动和重命名 git mv 文件名 新目录名/新文件名 将文件从当前目录移动到新目录,或者将当前文件重新命名为新文件名
提交修改文件 git commit 文件名 -m “提交描述信息” 暂存区文件改动提交到本地版本库中,提交的是本地动作,本地版本库记录改动,远端服务器不受影响
提交所有文件 git commit -am “提交描述信息” 一次提交所有暂存区改动文件到本地版本库中
查看日志 git log 查看提交历史,可配置不同参数,按提交时间由近及远列出提交历史日志,包括提交ID、作者、提交时间、提交描述等
推送到远端仓库分支 git push origin 本地分支名:远端分支名 在git commit命令之后,将本地分支内容推送到远端分支上
撤销操作 git reset commit_id 撤销工作区中的git add/commit操作,将工作区内容回退到历史提交的commit_id节点,可配置参数
回退操作 git checkout . / -文件名/ commit_id 回退本地所有修改而未提交的文件内容,取消所有本地工作区修改,使用-文件名,可回退某个单一文件的未提交改动,使用commit_id回退某个提交版本

Git分支管理

  1. 分支类型:
    分支类型 特征名称 功能
    主分支 master/main 常用,存储生产代码
    开发分支 develop 常用,存储即将发布的代码,常用于开发人员开发使用
    发布分支 release 常用,上线分支,准备发布上线使用
    功能分支 feature 用于开发新功能
    热修复分支 hotfix 用于紧急修复生产问题
  2. 分支管理命令:
    用途 命令
    git branch /-r/-a 查看本地工程的所有Git分支,-r查看远端服务器上的所有分支,-a查看远端+本地工程所有分支,”*”表示当前工作区所在分支
    git branch 新分支名 基于当前分支节点创建新分支,不会切换到新分支,而使用git checkout -b 新分支名则可以切换到新分支
    git branch -d/-D 分支名 删除本地分支,-D表示强制删除情况,也可搭配参数删除远程分支
    git checkout 分支名 切换检出分支,-f可以强制切换分支
    git fetch origin 远端分支:本地分支 分支更新,从远端服务器获取远端分支后,对本地仓库里的本地分支进行更新
    git merge/rebase 分支名 分支合并,从指定分支合并到当前分支
    git pull origin 远端分支:本地分支 分支合并,从远端服务器获取远端分支后,和本地分支进行自动合并

参考文献

[1] Git中文网
[2] TortoiseGit官网
[3] Git安装及使用
[4] Git教程


文章作者: 青山生柳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 青山生柳 !
  目录