Lazy loaded image
编程
😼Git入门基础
字数 1230阅读时长 4 分钟
2021-3-3
2025-8-13
type
status
date
slug
summary
tags
category
icon
password
因为个人开发过渡到团队协作的需要,版本控制应运而生,常见的版本控制工具有集中式和分布式两种,集中式类似于纯线上操作的网游,代表产品有cvs、svn和vss中,分布式版本工具类似于既可以线上又能线下的游戏,代表产品有git、Mercurial、Bazaar、Darcs,其中git的使用者最多

Git简史

notion image

Git工作机制

notion image
代码托管中心负责维护远程库,可以简单理解为能将自己本地维护的代码上传到远程库中并通过代码托管中心来维护。局域网代码托管中心代表产品有Gitlab,外网代码托管产品有GitHub和码云

Git常用命令

命令名称
作用
git init
初始化本地库
git config --global user.name 用户名
设置用户签名
git config --global user.email 邮箱
设置用户签名
git status
查看本地库状态
git add 文件名
添加到暂存区
git commit -m "日志信息" 文件名
提交到本地库
git reflog
查看历史记录
git reset --hard 版本号
版本穿梭
  1. 初始化本地库 git init
notion image
  1. 设置用户签名
基本语法(用户名和邮箱的引号可加可不加)
git config --global user.name 用户名 git config --global user.email 邮箱
notion image
此处慈铭的作用是区分不同操作这的身份, 用户的签名信息在没一个版本的提交信息都可以看到,据此来确认本次操作是谁做的,这里设置用户签名和将来登录github或者其他代码托管中心的账号没有任何关系。
  1. 查看本地库状态 git status
    1. 工作区没有任何文件
      1. notion image
    2. 检测到为追踪的文件
      1. notion image
    3. 检测到了有新建的文件添加到了暂存区
      1. notion image
    4. 提交完成之后查看状态
      1. notion image
    5. 检测到工作区有文件被修改(前提需要在后台改过文件)
      1. notion image
    6. 工作区的修改添加到了暂存区
      1. notion image
    7. 产生冲突(就后面将分支操作的时候演示)
      1. 多个分支同时编辑相同的地方
  1. 将工作区的修改添加到暂存区 git add 文件名
    1. notion image
  1. 将暂存区的修改提交到本地库 git commit -m "日志信息" 文件名
    1. notion image
  1. 查看历史版本 git reflog
    1. notion image
  1. 版本穿梭 git reset --hard 版本号
    1. notion image
      notion image
      版本穿梭的底层是移动head指针

分支操作

在版本控制的过程中,同时推进多个任务,以提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他的分支有任何的影响,失败的分支删除重新开始即可
notion image

分支命令

命令名称
作用
git branch 分支名
创建分支
git branch -v
查看分支
git checkout 分支名
切换分支
git merge 分支名
把指定的分支合并到当前分支上
  1. 查看分支 git branch -v
    1. notion image
  1. 创建分支 git branch 分支名,创建的新分支是对master的拷贝,连hash都一样
    1. notion image
  1. 在两个不同分之上分别做不同的修改操作
    1. notion image
  1. 切换分支 git checkout 分支名,发现hotfix 还是之前拷贝master分支的内容,没有同步master的修改
    1. notion image
      notion image
  1. 合并分支 git merge 分支名
  1. 分支合并后产生冲突
    1. notion image
      冲突产生的原因:
      合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
      如果一个分支的内容是在另一个分支创建时生成的,那么在只修改一个分支相同文件相同位置的内容情况下,合并时将不会产出冲突。
      冲突的解决:
      1)编辑有冲突的文件,删除特殊符号,决定要使用的内容
      特殊符号:<<<<<<< HEAD=======>>>>>>> hot-fix
      notion image
      然后添加到暂存区,并执行提交,此处提交的时候不能带文件名。不然无法解决冲突

创建分支和切换分支的说明

notion image
master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针,HEAD如果指向master,那么我们现在就在master分支上,HEAD如果执行hotfix,那么我们现在就在hotfix分支上。所以切换分支的本质就是移动HEAD指针。

本地库和远程库交互控制

  1. 团队内协作
    1. notion image
  1. 团队外协作
notion image
上一篇
Redis入门基础
下一篇
Git总结——多人开发 Git 分支管理