Git的基本原理和常用命令

前言

Git的基本原理和常用命令。


概念

Git是分布式版本控制系统:

  • 分布式:每台计算机都有完整的版本仓库,可无需联网工作,可无需服务端支持
  • 版本控制:版本管理(旧版本和新版本),分支管理(其他分支和当前分支)
  • 系统:软件

基本原理

系统区域

  • 用户文件夹:普通的文件夹
  • 工作区(Workspace):用户文件夹中,除.git文件夹外的其他文件
  • 版本库:用户文件夹中的.git文件夹
  • 暂存区(Stage/Index):.git文件夹中的index文件
  • 本地仓库(Repository):.git文件夹中,除index文件外的其他文件
  • 远程仓库(Remote):不在本地的文件(一般存储在代码托管平台:如Github或Gitee)

文件的系统区域流

工作区->暂存区->本地仓库->远程仓库:

  • git add:工作区->暂存区
  • git commit:暂存区->本地仓库
  • git push:本地仓库->远程仓库

远程仓库->本地仓库->暂存区->工作区:

  • git clone:远程仓库->用户文件夹
  • git pull:远程仓库->工作区
  • git fetch:远程仓库->本地仓库
  • git merge:本地仓库->工作区

git pull = git fetch + git merge

  • git reset:本地仓库->暂存区
  • git restore:暂存区->工作区

工作区的文件状态

  • 未跟踪(Untracked):未上传过暂存区的文件,不参与版本控制
  • 未修改(Unmodified):上传过暂存区的文件,参与版本控制,和本地仓库的版本相同
  • 已修改(Modified):上传过暂存区的文件,参与版本控制,和本地仓库的版本不同
  • 已暂存(Staged ),暂存区中的文件

文件的工作区状态流

  • git add:未跟踪->已暂存
  • git rm:已暂存->未跟踪
  • 修改文件:未修改->已修改
  • git checkout:已修改->未修改
  • git add:已修改->已暂存

映射关系

  • 本地用户名和邮箱——远程用户名和邮箱
  • 本地仓库——远程仓库
  • 本地分支——远程分支

映射关系的建立

本地用户名和邮箱——远程用户名和邮箱:

  1. 在代码托管平台绑定邮箱
  2. git config

本地仓库——远程仓库:

  • git remote
  • git clone

本地分支——远程分支:

  • git pull = git fetch + git merge
  • git push

特殊文件

  • HEAD:指针,在本地指向:HEAD->当前分支->当前分支最近提交的版本
  • index:暂存区

工作流程

用户配置流程

  1. 在代码托管平台绑定邮箱
  2. git config --list
  3. git config –global user.name <用户名>
  4. git config –global user.email <邮箱>

作用:记录用户操作信息

本地用户名和邮箱——远程用户名和邮箱的映射无严格关系:
未在代码托管平台绑定邮箱,有本地配置,可操作,不显示代码托管平台的账号信息
在代码托管平台绑定邮箱,有本地配置,可操作,显示代码托管平台的账号信息

初始化(下载和安装)Git后,需进行用户配置流程
再使用Git时,一般无需进行用户配置流程

初始化并使用流程

  1. 创建并初始化远程仓库
  2. 创建用户文件夹
  3. git init
  4. git remote add <本地对远程仓库的别名:一般为origin> <远程仓库的地址>
  5. git pull <本地对远程仓库的别名:一般为origin> <远程分支名>:<本地分支名>
  6. 基本上传流程,回退操作,分支开发流程,分支合并流程

克隆并使用流程

  1. 创建并初始化远程仓库
  2. git clone <远程仓库的地址>
  3. 基本上传流程,回退操作,分支开发流程,分支合并流程

基本上传流程

  1. 创建或修改文件
  2. git add .(注意有“.”)
  3. git commit -m <说明>
  4. git push <远程主机名> <本地分支名>:<远程分支名>

回退操作

  • git reset --soft <版本号>(使用git log查看版本号)
  • git checkout – <文件名>
  • git rm --cached <文件名>

提示:

  • 单人开发:本地仓库版本在远程仓库版本的上游,无法拉取远程仓库版本。在远程仓库的版本必在本地仓库,若需要远程仓库版本,获取本地仓库版本即可
  • 多人开发:是更新而不是回退操作,进行分支开发流程,分支合并流程

分支开发流程

  1. 在代码托管平台创建其他分支或已有其他分支
  2. git branch <分支名>
  3. git switch <分支名>
  4. git pull <本地对远程仓库的别名:一般为origin> <远程分支名>:<本地分支名>
  5. 基本上传流程

分支合并流程

  1. 被合并分支进行基本上传流程
  2. 合并分支进行基本上传流程
  3. git switch <合并分支名>
  4. git merge <被合并分支名>
  5. 打开文件,查看冲突内容
  6. 修改文件,解决冲突内容
  7. 基本上传流程
  8. git branch -d <被合并分支名>

理解:

  • 假设:合并分支为master,被合并分支为feature
  • 原先:HEAD->master->最近提交点A
  • git branch feature:feature->A
  • git switch feature:HEAD->feature->A

情况一:

  • 修改feature的文件
  • 若feature提交:HEAD->feature->最近提交点B
  • git merge feature:HEAD->master->最近提交点B,master的文件更新为feature的文件
  • 因为A->B,B是A的上游,A更新为B,不会发生冲突

情况二:

  • 修改feature的文件
  • 若feature提交:HEAD->feature->最近提交点B
  • 修改master的文件
  • 若master提交:HEAD->master->最近提交点C
  • git merge feature:HEAD->master->最近提交点D,feature->最近提交点D
  • 因为A->B和A->C互不相交,可能发生冲突。合并后为D,有A->B->D和A->C->D

常用命令

用户配置流程

  • git config --list:查看配置信息
  • git config –global user.name <用户名>:配置全局用户名
  • git config –global user.email <邮箱>:配置全局邮箱
  • git config user.name <用户名>:配置当前用户名
  • git config user.email <邮箱>:配置当前邮箱

初始化并使用流程

  • git init:用户文件夹->工作区+版本库
  • git remote add <本地对远程仓库的别名:一般为origin> <远程仓库的地址>:本地仓库——远程仓库
  • git remote rm <本地对远程仓库的别名:一般为origin>:删除本地仓库——远程仓库映射
  • git pull <本地对远程仓库的别名:一般为origin> <远程分支名>:<本地分支名>:远程仓库的远程分支->本地仓库的本地分支

克隆并使用流程

  • git clone <远程仓库的地址>:远程仓库->用户文件夹
  • git clone <远程仓库的地址> <用户文件夹名>:远程仓库->用户文件夹,指定用户文件夹名

基本上传流程

  • git add .(注意有“.”):工作区->暂存区
  • git commit -m <说明>:暂存区->本地仓库
  • git push <远程主机名> <本地分支名>:<远程分支名>:本地仓库的本地分支->远程仓库的远程分支

回退操作

  • git reset --soft <版本号>(使用git log查看版本号):本地仓库->暂存区
  • git checkout – <文件名>:暂存区->工作区
  • git rm --cached <文件名>:已暂存->未跟踪

分支开发流程

  • git branch:查看分支
  • git branch <分支名>:创建分支
  • git switch <分支名>:切换分支
  • ls:查看当前分支的工作区文件

分支合并流程

  • git merge <被合并分支名>:当前分支合并指定分支
  • git branch -d <被合并分支名>:删除分支

其他

  • git status:查看状态
  • git status -s:查看精简的状态
  • git diff:比较工作区和暂存区文件的不同
  • git log:查看日志
  • git blame <文件名>:查看文件的日志
  • git tag:设置标签

总结

Git的基本原理和常用命令。


参考资料


作者的话

  • 感谢参考资料的作者/博主
  • 作者:夜悊
  • 版权所有,转载请注明出处,谢谢~
  • 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
  • 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
  • 文章在认识上有错误的地方, 敬请批评指正
  • 望读者们都能有所收获

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值