Skip to content

Git分布式版本控制工具

@Author : LeonSong

@Date : October 10, 2025

一. Git工作流程

1.1 Git简介

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

1.2 Git工作流程

image-20251010213908474

主要命令如下:

Order Describe
clone 从远程仓库克隆代码到本地仓库
checkout 从本地仓库中检出一个仓库分支然后进行修订
add 在提交前先将代码提交到暂存区
commit 提交到本地仓库,本地仓库中保存修改的各个历史版本
fetch 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少
pull 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge
push 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库

二 . Git安装及常用指令

2.1安装配置(MacOS)

通过Homebrew安装

检查homebrew

# 检查homebrew是否安装
where homebrew 

image-20251010214710715

如果没有安装到 Homebrew for macOS 下载.pkg安装包安装,因为brew的官方源下载很慢,先进行换源

  • 替换brew.git
    $ cd "$(brew --repo)"
    
    # 中国科大:
    $ git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
    
    # 清华大学:
    $ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
    
  • 替换brew-core.git

    $ cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
    
    # 中国科大:
    $ git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
    
    # 清华大学:
    $ git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
    
  • 替换homebrew-bottles

    # 中国科大:
    $ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile
    $ source ~/.bash_profile
    
    # 清华大学:
    $ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles' >> ~/.bash_profile
    $ source ~/.bash_profile
    

上述指令执行完毕后,执行

brew update

换源之后第一次更新的速度比较慢,耐心等待,更新之后下载速度就会明显提升

安装Git并设置用户信息

brew install git

检查一下是否安装成功

image-20251010220306718

设置用户信息

git config --global user.name "your_user_name"
git config --global user.email "your_email"

执行以下命令查看是否配置成功

image-20251010220628197


为常用指令设置别名

别名,就是给一串命令添加一个缩写,可以让终端自动识别,实现同样的功能

大家一般已经创建过~/.zshrc文件,位于/User/username目录下,在终端中打开文件

nano / vim  ~/.zshrc

以下是一些示例,可以参照

image-20251010221246667

2.2 基础指令

image-20251010222242042

使用命令控制这些状态之间的转换

1.初始化git目录

git会将该目录初始化为本地git仓库,创建.git文件夹

git init

2.将该仓库的改动放入暂存区,等待提交

git add

# usage
git add src/            # 添加整个目录
git add test.txt        # 添加单个文件
git add .               # 添加所有改动

3.提交暂存区的内容到本地仓库的当前分支

-m : message的缩写,后面跟描述信息

git commit

# usage
git commit -m "add README.md document"

4.查看修改状态

git status

5.查看提交记录

git log [options]

    --all               显示所有分支
    --pretty=oneline     将提交信息显示为一行
    --abbrev-commit      使得输出的commitID更简短
    --graph             以图的形式显示

6.版本切换

先使用git log命令查看commitID,也可以用git reflog查看已经删除的记录

git reset --hard commitID

添加文件到忽略列表

实际开发中,不是所有的项目文件都需要管理,

在当前目录下创建.ignore文件,把需要git忽略的文件名写入到.ignore文件中

image-20251013100534688

分支

这里介绍一下分支的实际意义,主要包括以下方面:

  • 隔离变化,保护主干
    • 如果你的服务器上已经运行了一个网站,领导告诉你希望你添加一个与AI智能聊天的功能或者让你修复一个Bug,你肯定不会在服务器上直接开发,你会想先把源码从服务器上拷贝到另一台机器上进行开发或者修复,然后用你做完的成品去替换掉原来的源码.有了Git之后,我们假设服务器上正在运行的项目是main分支,就可以创建一个feature分支用于开发,创建一个hotfix分支进行修改Bug,让开发,维护和服务都不受影响.
  • 团队协作

    • 同样的,你成为了软件开发部门的主管,领导喊你们开发一个线上商城,你安排A做登录功能,安排B做购物车功能,安排C做推荐功能,每个人都有独立的分工,每个人都可以创建一个自己的分支如feature/login, feature/shopCar, feature/recommend去独立工作,各自提交各自的代码,提交后发起代码审查,你审核之后觉得这些功能都OK了,再与main分支进行合并
  • git branch 查看本地分支

image-20251013095045762

  • git branch branch_name 创建名为branch_name的本地分支

image-20251013095119863

  • git checkout branch_name 切换分支

image-20251013095152114

  • git chekout -b branch_name 切换一个不存在的分支(创建并切换)

image-20251013095228468

  • git merge branch_name 一个分支上的提交可以合并到另一个分支

合并分支时,当前一定要在要合并到的那个分支

image-20251013095551444

image-20251013095614240

image-20251013095835347

  • git branch -d[-D] branch_name 删除分支,-d删除分支时需要做各种检查,-D为强制删除

注意:新建Gi仓库只有在执行第一次commit之后才会产生master分支,在第一次commit之前无法创建其他分支

解决冲突

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,步骤如下:

  • 处理文件中冲突的地方
  • 将解决完冲突的文件加入到暂存区 (add)
  • 提交到仓库 (commit)
# Demo
~/GitTest 目录下有一个Demo.txt文件
此时存在两个分支  /master
               /dev01
master 分支下,Demo.txt内容是  Hello Demo Master
dev01 分支下,Demo.txt内容是   Hello Demo Dev01

image-20251013103439446

image-20251013103508534

image-20251013103541203

image-20251013103636617

三. Git远程仓库

1-公钥,私钥与数字签名

这里推荐知乎上的一篇文档,非常浅显易懂 https://zhuanlan.zhihu.com/p/698175888

接下来我会演示怎么配置GitHubGitee 的ssh密钥配置过程,对于没有Git仓库使用经验的,建议从Gitee(国内的代码仓库)用起,相比GitHub页面更加中文友好 对后续使用GitHub可以实现一个过渡作用,国内的话不用魔法使用GitHub是一件非常让人头疼的事情.

2-Gitee

预备工作,与GitHub适用

  1. 进入~/.ssh目录下,查看是否已经有密钥,我这里是公司的windows电脑,看到没有密钥存在

image-20251226105638389

  1. 创建密钥

    ssh-keygen -t ed25519 -C "le0n404@163.com" -f ~/.ssh/id_ed25519_gitee
    # 邮箱替换成你在gitee上绑定的邮箱
    

    image-20251226110253716

  2. 检查是否安装ssh的客户端,windows用户按win键搜索powershell以管理员身份运行执行

    Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'
    

    image-20251226111456492

    如果未安装:

    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
    

    安装后启动ssh客户端:

    Start-Service ssh-agent
    
  3. 进入gitee,右上角进入我的设置后,左边选项栏选择ssh密钥

    image-20251226112511036 image-20251226112613908

  4. 查看公钥并复制上去,标题自定义做好区分

    cat id_ed25519_gitee.pub    # 替换为你自己的公钥文件名
    

    image-20251226112756928

    image-20251226112944389

  5. 修改一下~/.ssh/congfig配置文件

    没有的话自行创建

    notepad ~/.ssh/config
    

    添加以下内容,只有私钥路径需要替换成你自己的

    # Gitee
    Host gitee.com
        HostName gitee.com
        User git
        IdentityFile ~/.ssh/id_ed25519_gitee
        IdentityOnly yes
    
  6. 选择一个本地仓库将仓库地址更改为ssh形式,这里可以看到目前这个仓库用的是http

    image-20251226115014213

    执行:

    git remote set-url origin git@gitee.com:LeonSong/repo.git
    

    重新查看: image-20251226135428927

    到此就已经完成ssh密钥的配置了,现在可以尝试推送或拉取代码仓库了

3-GitHub

我累了,跟上面其实差不多...