> 技术文档 > Git - 的安装与使用

Git - 的安装与使用


目录

  • 前言
  • 一、软件开发所面临的问题
  • 二、Git 的简介
  • 三、Git 的工作流程
  • 四、Git 的下载与安装
  • 五、Git 中的远程仓库
    • 1. 远程仓库的概述
    • 2. 远程仓库的创建
    • 3. HTTPS 和 SSH 协议
  • 六、Git 命令
    • 1. 仓库初始化与克隆
    • 2. 基础工作流
    • 3. 分支管理
    • 4. 远程协作
    • 5. 撤销与回退
    • 6. 查看历史
    • 7. 临时保存
    • 8. 标签管理
    • 9. 高级工具
    • 10. 配置管理
  • 七、Git 的使用
  • 八、总结

前言

对于软件开发人员而言 Git 是日常工作中很重要的工具,不仅提高了开发的质量和效率,并且使得软件开发变得更加灵活、开放与协作。Git 不仅对软件开发人员有用,它的核心功能 — 版本控制,对于任何需要管理文档、项目或者创意作品的非开发人员也同样受益。

以下内容是简单对 Git 的介绍,以及安装与简单使用。


一、软件开发所面临的问题

在现代软件开发中,团队协作、代码管理和版本控制是必不可少的环节。在 Git 出现之前,开发人员常常面临诸多问题:代码丢失、版本混乱、协作冲突等

Git 是一个分布式版本控制系统,由 Linus Torvalds2005 年创建,旨在帮助开发团队高效管理代码变更。下面我们将从开发中常见的几个问题出发,介绍 Git 如何解决这些问题。


问题一:代码备份与丢失风险 — 本地开发的风险

在没有版本控制的开发环境中:

  • 代码仅存储在本地计算机上
  • 硬件故障可能导致所有代码丢失
  • 误删除文件无法恢复
  • 无法追溯历史版本

🎯 开发成果面临永久丢失风险

Git 解决方案:分布式版本控制

在这里插入图片描述

Git 通过以下方式解决备份问题:

  • 完整的代码仓库存储在本地和远程服务器
  • 每次提交(commit)都保存完整快照
  • 支持多备份(本地、远程服务器、团队成员的仓库)
  • 历史记录完整可追溯
# 基本工作流程git add . # 添加更改到暂存区git commit -m \"描述\" # 提交到本地仓库git push  # 推送到远程仓库

🎈 分布式存储保障代码永不丢失


问题二:多人协作冲突 — 团队协作的挑战

当多人同时修改同一项目时:

  • 无法知道谁修改了哪些文件
  • 代码覆盖问题(后提交者覆盖前者)
  • 合并代码困难且容易出错
  • 缺乏代码修改历史记录

🎯 团队协作效率低下,冲突频发

Git 解决方案:分支与合并

在这里插入图片描述

Git 提供了强大的分支功能:

  • 每个开发者有自己的独立分支
  • 功能开发完成后合并到主分支
  • 自动合并与冲突解决工具
  • 清晰的代码修改历史记录
# 分支工作流程示例git checkout -b feature/login # 创建并切换到新分支# 开发新功能...git add .git commit -m \"添加登录功能\"git checkout main  # 切换回主分支git merge feature/login # 合并功能分支

🎈 分支管理实现高效协作


问题三:版本回退与错误修复 — 版本管理的困境

在传统开发中:

  • 无法轻松回退到之前可工作的版本
  • 修复错误时可能引入新问题
  • 难以确定问题引入的具体时间点
  • 维护多个版本困难

🎯 错误修复困难,版本管理混乱

Git 解决方案:历史追踪与回退

在这里插入图片描述

Git 提供完整的版本历史:

  • 每个提交(commit)都是项目的一个快照
  • 可以查看任意时间点的代码状态
  • 轻松回退到之前的版本
  • 使用分支进行错误修复
# 版本控制常用命令git log # 查看提交历史git checkout <commit-hash> # 切换到特定提交git revert <commit-hash> # 撤销特定提交的更改git reset --hard HEAD~1 # 回退到上一个提交

🎈 完整历史记录支持安全回退


二、Git 的简介

官网:https://git-scm.com/

文档:https://git-scm.com/book/zh/v2

Git - 的安装与使用

Git 最初是由 Linux 内核的开发者 Linus Torvalds 创建的,目的是为了更好地管理 Linux 内核源代码的开发。Git 的设计目标是速度、简单的设计和对非线性开发的支持。

Git 之前,许多版本控制系统是集中式的,比如:SVN,这意味着所有开发人员都必须连接到一个中央服务器来提交代码、查看更改等。Git 通过提供一个完全分布式的系统解决了这个问题,每个开发者都可以在自己的本地机器上拥有完整的代码历史记录,从而可以在没有中央服务器的情况下工作。这使得开发者可以在本地执行大部分操作,而不需要网络连接。

Git 现在是全球最流行的版本控制系统,被广泛用于各种规模的项目,从小型个人项目到大型企业级项目。

Git 的核心特性:

  • 分布式架构:

    • 每个开发者的本地机器上都有一个完整的版本库,包括完整的提交历史和代码。
    • 这意味着即使没有网络连接,开发者也可以进行版本控制操作。
  • 分支管理:

    • Git 支持快速创建和合并分支,使得并行开发和实验性开发变得简单。
  • 数据完整性:

    • Git 使用 SHA-1 散列算法保护代码和历史记录的完整性,确保数据不会在传输过程中损坏。
  • 非线性开发:

    • 开发者可以以非线性方式工作,轻松合并和重组代码。
  • 灵活的工作流程:

    • Git 支持多种工作流程,如集中式工作流、功能分支工作流、Gitflow 工作流等。
  • 性能:

    • Git 在处理大量文件和大项目时表现出色,具有很高的性能。
  • 跨平台:

    • Git 可以在多种操作系统上运行,包括 Linux、Mac OSWindows
  • 社区和工具支持:

    • Git 拥有一个活跃的社区和丰富的工具,如 GitHub、GitLabBitbucket,这些平台提供了额外的功能,如代码托管、代码审查、持续集成等。

Git 的优势:

  • 分布式架构:提供了更好的数据备份和灾难恢复能力。
  • 非线性开发:支持快速、简便的分支创建和合并。
  • 数据完整性:使用 SHA-1 散列算法确保代码和历史记录的完整性。
  • 灵活的工作流程:适应不同的开发模式和团队需求。
  • 性能:在处理大量文件和项目时表现出色。
  • 跨平台:支持多种操作系统。
  • 社区和工具支持:拥有丰富的资源和工具,如 GitHub、GitLabBitbucket

三、Git 的工作流程

Git 的核心流程围绕四个关键区域:工作目录、暂存区、本地仓库和远程仓库

在这里插入图片描述

  • 工作区(Workspace):工作目录是项目在本地文件系统上的目录,包含项目的所有文件和子目录。在这里可以创建、修改和删除文件,这些更改最初只存在于工作目录中。
  • 暂存区(Index / Stage):也称为索引,是准备下次提交的更改的暂存区域。它允许选择性地添加要包含在下一次提交中的更改,而不是必须提交所有修改。
  • 仓库区 / 本地仓库(Repository):位于计算机上,包含项目的完整历史和所有版本。当提交更改时,Git 会获取暂存区中的内容并创建一个永久快照存储在本地仓库中。
  • 远程仓库(Remote):远程仓库通常位于服务器上(如 GitHub、GitLab),是团队成员共享代码的地方。可以将本地提交推送到远程仓库,也可以从远程仓库拉取他人的更改。

Git 的基本工作流程:

  • 初始化仓库(Init):在本地创建一个新的 Git 仓库。
  • 克隆仓库(Clone):从远程仓库克隆代码到本地。
  • 添加文件(Add):将文件添加到暂存区,准备下一次提交。
  • 提交更改(Commit):保存项目历史和文件的更改。
  • 查看状态(Status):查看文件的状态,了解哪些文件被修改了但还没有提交。
  • 分支操作(Branch):创建、切换和合并分支。
  • 拉取更新(Pull):从远程仓库获取最新的代码更改。
  • 推送更改(Push):将本地的更改推送到远程仓库。
  • 查看日志(Log):查看项目的提交历史。
  • 撤销操作(Reset, Revert):撤销错误的提交。

四、Git 的下载与安装

官网下载地址:https://git-scm.com/downloads

Git - 的安装与使用

根据自己电脑系统下载安装包,目前大部分人的电脑都是 64 位的,在 Windows 上可以直接下载 64-bit Git for Windows Setup.

Git - 的安装与使用

Git - 的安装与使用

下载完成之后,双击安装包,进入安装导向界面,点击 Next

在这里插入图片描述

指定安装目录,再点击 Next

在这里插入图片描述

一路点击 Next

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

等待安装

在这里插入图片描述

安装完成,点击 Finish

在这里插入图片描述

安装完成之后在电脑任意目录下,右键鼠标,如果能看到以下两个菜单则说明 Git 安装成功

Git - 的安装与使用

PS:如果右键没有看到,可能在 显示更多选项 的菜单中

  • Git GUI:Git 提供的图形界面工具
  • Git Bash:Git 提供的命令行工具

点击 Open Git Bash here,可以打开 Git 命令客户端

Git - 的安装与使用

操作到这里就证明 Git 已经安装成功了


五、Git 中的远程仓库

1. 远程仓库的概述

前面介绍过远程仓库是托管在远程服务器上的 Git 仓库,通常用于团队协作和代码备份。与本地仓库不同,远程仓库位于中央服务器(如GitHub、GitLab 等)上,允许多个开发者共享代码。

为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库。 远程仓库是指托管在因特网或其他网络中的你的项目的版本库。 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写。 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。 管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。

市场上有多种 Git 远程仓库托管服务,每种都有其特点和优势:

  • GitHub

    • 最流行的Git托管平台,拥有庞大的开源社区和丰富的协作功能。
    • 网址: www.github.com
  • GitLab

    • 提供强大的 CI/CD 功能,支持自托管,适合企业级应用。
    • 网址: www.gitlab.cn
  • Bitbucket

    • 与Jira紧密集成,提供免费私有仓库,适合专业团队。
    • 网址: www.bitbucket.org
  • Azure Repos

    • Microsoft Azure DevOps的一部分,提供企业级Git托管服务。
    • 网址:azure.microsoft.com/zh-cn/
  • Gitee

    • 码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库。
    • 网址:www.gitee.com

2. 远程仓库的创建

这里以 Gitee 为例,教大家如何在托管平台上申请和使用远程仓库。

首先可以点击以下链接进入 Gitee 的官网

Gitee 官网:www.gitee.com

Git - 的安装与使用

如果有账号直接登录即可,没有就注册一个

Git - 的安装与使用

设置个人信息

Git - 的安装与使用

进入工作台

Git - 的安装与使用

接下来我们就可以创建自己的仓库,点击 创建我的仓库

Git - 的安装与使用

填写好 仓库名称路径开源/私有 等关键信息之后即可点击 创建,当然也可以配置 初始化仓库、模板、分支模型等信息

远程仓库创建完成

Git - 的安装与使用


3. HTTPS 和 SSH 协议

Git 中与远程仓库(如 GitHub、GitLab、Bitbucket 等)通信时,HTTPSSSH 是两种最常用的协议。它们各有优缺点,适用于不同的场景。下面详细介绍它们:

HTTPS(超文本传输安全协议):

  • 核心原理:

    • 基于标准的 Web HTTPS 协议(端口 443)。
    • 使用用户名和密码(或更常见的,个人访问令牌 - Personal Access Token, PAT)进行身份验证。
    • 所有通信都通过 SSL/TLS 加密,确保传输过程中的数据安全。
  • 工作流程 (典型):

    1. git clone https://github.com/username/repo.git
    2. 提示输入用户名和密码(或访问令牌)。
    3. 本地 Git 客户端将凭据发送给远程服务器。
    4. 服务器验证凭据。
    5. 验证通过后,操作(克隆、推送、拉取等)继续进行。
    6. 免密方式: 可以使用 Git 凭证存储(如 git config credential.helper storecache)或操作系统钥匙串来缓存凭据,避免每次输入。现代最佳实践是使用 PAT 代替密码(因为 GitHub 等已弃用密码验证)。
  • 优点:

    • 设置简单: 通常不需要额外配置,只需知道仓库的 HTTPS URL 和账户凭据即可克隆。
    • 防火墙友好: HTTPS 使用端口 443,这是几乎所有网络都允许的标准 Web 端口,通常不受企业防火墙限制。
    • 匿名读取: 对于公开仓库,可以直接克隆(git clone)而无需任何身份验证(读取权限)。
    • 双重验证支持: 如果需要账户开启了两步验证,使用 PAT 可以很好地支持。
    • 令牌粒度控制: PAT 可以设置细粒度的权限(如只读、读写特定仓库)和有效期,安全性更高(泄露了可以单独撤销)。
    • 凭证管理: 操作系统或 Git 内置的凭证助手可以方便地管理缓存。
  • 缺点:

    • 身份验证: 每次操作(首次或凭证过期后)可能需要输入 用户名/PAT(除非使用凭证缓存)。
    • 潜在凭证泄露风险: 如果配置不当(如使用不安全的凭证缓存),或在脚本中硬编码凭据,存在泄露风险。使用 PAT 并妥善保管比密码安全得多。
    • 效率: 在某些情况下(尤其是大型仓库或高延迟网络),HTTPS 可能比 SSH 稍慢一些(尽管差异在现代 Git 和网络中已变小)。

SSH(安全外壳协议):

  • 核心原理:

    • 使用非对称加密(公钥/私钥对)。
    • 本地生成一对密钥:私钥(严格保密,保存在本地)和公钥(可以公开,上传到 Git 服务商)。
    • 所有通信通过 SSH 隧道加密(端口 22)。
  • 工作流程:

    1. 生成密钥对: ssh-keygen -t ed25519 -C \"your_email@example.com\" (推荐) 或 ssh-keygen -t rsa -b 4096 -C \"your_email@example.com\"
    2. 添加公钥到服务商: 将 ~/.ssh/id_ed25519.pub (或类似) 文件内容复制粘贴到你的 Git 服务账户设置(如 GitHubSettings -> SSH and GPG keys)。
    3. (可选但推荐) 启动 SSH 代理并添加私钥: eval \"$(ssh-agent -s)\" 然后 ssh-add ~/.ssh/id_ed25519 (会提示输入私钥密码短语)。
    4. 使用 SSH URL 克隆: git clone git@github.com:username/repo.git
    5. 身份验证: 服务器用你的公钥加密一个随机消息发给你,你的本地 SSH 客户端用私钥解密并发回。服务器验证成功即允许操作。整个过程无需传输密码/令牌。
    6. 后续所有操作(push, pull 等)都自动使用此密钥进行认证(只要私钥在代理中或可用)。
  • 优点:

    • 强安全性: 基于密钥的非对称加密认证,比密码更安全(难以暴力破解)。私钥从不离开你的机器。

    • 免密操作: 设置好密钥对并添加到代理后,所有 Git 操作都不需要输入用户名/密码/令牌,非常便捷高效。

    • 高效传输: SSH 协议通常被认为在传输 Git 数据时效率更高,尤其是在克隆大型仓库时可能更快。

    • 连接稳定性: SSH 连接建立后通常更持久稳定。

    • 多密钥管理: 可以为不同服务、账户或环境生成不同的密钥对,实现精细的访问控制。一个密钥泄露,只需撤销该公钥,不影响其他服务。

    • Git 原生支持: 是 Git 设计时最自然的远程协议之一。

  • 缺点:

    • 初始设置稍复杂: 需要生成密钥对、添加公钥到服务商、管理私钥(和密码短语)。

    • 防火墙限制: 有些严格的企业防火墙可能阻止出站的 SSH 连接(端口 22),而 HTTPS(端口 443)通常允许。

    • 公钥管理: 需要在每个服务商账户上管理你的公钥(添加、删除、命名)。

    • 私钥安全: 私钥是访问的 “根”。如果私钥泄露且未加密(无密码短语),攻击者就能访问所有关联的服务。必须妥善保管私钥并设置强密码短语!

关键对比总结 (HTTPS vs SSH)

特性 HTTPS SSH 协议/端口 HTTPS (443) SSH (22) 身份验证方式 用户名 + 密码 / 个人访问令牌 (PAT) 公钥/私钥对 初始设 非常简单 (URL + 凭据) 需要生成密钥、上传公钥 (稍复杂) 日常操作 可能需要输入凭据 (可缓存) 设置好后完全免密 (使用代理) 安全性 传输加密 (TLS)。PAT 比密码安全。 非常强 (非对称加密,私钥本地)。需保护私钥。 防火墙穿透 非常好 (443端口通常开放) 可能受阻 (22端口有时被禁) 效率/速度 良好 (现代优化后) 通常更高效 (尤其大仓库/高延迟) 连接稳定性 良好 通常更好/更持久 匿名读取 支持 (公开仓库) 不支持 (需要密钥认证) 多账户/精细控制 依赖账户/PAT权限 优秀 (可生成多个密钥对管理不同访问) 推荐使用场景 - 快速开始
- 严格防火墙环境
- 公开仓库克隆 (无需认证)
- CI/CD (使用 PAT)
- 需要细粒度令牌权限 - 追求高效免密操作
- 开发者日常工作站
- 不限制 22 端口的环境
- 需要管理多个身份/服务

HTTPSSSH 都是安全可靠的 Git 远程协议。SSH 在便捷性(免密)和效率上通常更胜一筹,是开发者本地工作站的理想选择。HTTPS 则在设置简单性、防火墙穿透性和对公开仓库的匿名访问上更有优势,也是 CI/CD 中常用的安全方式(配合 PAT)。 理解它们的原理和优缺点,能帮助你根据具体环境和需求做出最佳选择。许多开发者会同时配置两种方式,在不同场景下灵活使用。


六、Git 命令

我们可以通过 git --help 命令查看 Git 中的各命令说明

Git - 的安装与使用

下面我也列举了 Git 中 40+ 核心命令,按功能分类并包含实用示例。建议保存为参考手册,使用时可通过 git help 查看具体命令的完整文档。

1. 仓库初始化与克隆

命令 作用 示例 常用选项 git init 初始化新仓库 git init --bare 创建裸仓库 git clone 克隆远程仓库 git clone https://github.com/user/repo.git --depth 1 浅克隆
--branch feat 克隆指定分支

2. 基础工作流

命令 作用 示例 说明 git add 添加文件到暂存区 git add index.html
git add . 支持通配符 *.js git commit 提交变更 git commit -m \"添加登录功能\" -a 自动添加已跟踪文件
--amend 修改上次提交 git status 查看状态 git status -s -s 简洁模式输出 git diff 查看差异 git diff
git diff --staged 比较工作区/暂存区/仓库

3. 分支管理

命令 作用 示例 说明 git branch 分支操作 git branch feat/login
git branch -d feat -a 查看所有分支
-D 强制删除 git checkout 切换分支 git checkout main
git checkout -b new-feat -b 创建并切换 git switch 切换分支(Git 2.23+) git switch dev
git switch -c hotfix 更安全的切换方式 git merge 合并分支 git merge feat/login --no-ff 禁用快进合并 git rebase 变基操作 git rebase main 保持提交历史线性

4. 远程协作

命令 作用 示例 说明 git remote 管理远程仓库 git remote -v
git remote add upstream url -v 查看详情 git push 推送代码 git push origin main
git push -u origin feat -u 设置上游分支 git pull 拉取更新 git pull origin dev = git fetch + git merge git fetch 获取远程更新 git fetch --prune --prune 同步删除远程已删分支

5. 撤销与回退

命令 作用 示例 说明 git restore 撤销修改 git restore file.txt
git restore --staged file 替代 git checkout -- file git reset 版本回退 git reset HEAD~1
git reset --hard d3f4g --soft 保留修改
--hard 彻底丢弃 git revert 撤销提交 git revert d3f4g5 安全撤销(不重写历史) git clean 清理未跟踪文件 git clean -fd -f 强制
-d 包含目录

6. 查看历史

命令 作用 示例 常用选项 git log 查看提交历史 git log --oneline -5 --graph 分支树
-p 显示差异
--since=\"1 week ago\" git show 显示提交详情 git show d3f4g5 --name-only 仅显示修改文件 git blame 追溯文件修改 git blame index.html -L 10,20 指定行范围

7. 临时保存

命令 作用 示例 说明 git stash 暂存修改 git stash -u -u 包含未跟踪文件 git stash pop 恢复修改 git stash pop stash@{1} 恢复指定暂存 git stash list 查看暂存列表 git stash list

8. 标签管理

命令 作用 示例 说明 git tag 创建标签 git tag v1.0
git tag -a v2.0 -m \"Release\" -a 创建附注标签 git push --tags 推送标签 git push origin --tags 推送所有标签 git tag -d 删除标签 git tag -d v1.0

9. 高级工具

命令 作用 示例 使用场景 git reflog 查看操作历史 git reflog 找回误删提交/分支 git bisect 二分查找BUG git bisect start
git bisect good v1.0
git bisect bad HEAD 定位问题提交 git cherry-pick 选择性提交 git cherry-pick d3f4g5 移植特定提交

10. 配置管理

命令 作用 示例 说明 git config 配置设置 git config --global user.name \"John\" --global 全局配置
--list 查看配置 git alias 创建别名 git config --global alias.co checkout 简化常用命令

最佳实践提示

  1. 提交规范:: (如 feat: 添加用户登录)
  2. 分支策略:main (生产) → dev (开发) → feature/* (功能分支)
  3. 每日工作流:
    git pull origin main # 拉取最新代码git switch -b feat/xxx # 创建功能分支# 进行开发...git add .git commit -m \"feat: 实现xxx功能\"git push origin feat/xxx# 创建PR/MR合并到主分支
  4. 重要原则:不要强制推送 (push -f) 公共分支

七、Git 的使用

上面已经介绍了 Git 是干什么的,以及它的工作流程并且安装了 Git 和创建了远程仓库,还熟悉了 Git 相关的命令,那么现在就可以进行相关的实操了。

我们之前已经创建了远程仓库,Gitee 就已经为我们提供了一些基本的操作。

案例一:本地创建Git仓库添加文件并推送至远程仓库

  1. 设置 Git 的全局配置
  2. 创建工作目录,初始化本地 Git 仓库
  3. 创建 README.md 文件
  4. 使用 status 命令查看状态
  5. 使用 add 命令添加,并查看状态
  6. 使用 commit 命令提交到本地仓库
  7. 使用 log 命令查看日志
  8. 使用 remote add 管理远程仓库
  9. 使用 push 推送提交内容到远程仓库

步骤如下:

  • ① 设置 Git 的全局配置

    如果是第一次使用 Git,那就需要设置 Git 的全局配置

    # 设置全局名称git config --global user.name \"Your_name\"# 设置全局邮箱git config --global user.email \"Your_email\"

    Git - 的安装与使用

    同时我们可以使用 git config -l 命令查看所有的配置

    # 查询所有的全局配置git config -l

    Git - 的安装与使用

  • ② 创建工作目录,初始化本地仓库

    创建工作目录 my-work 下,并且进入到该目录下

    # 创建工作目录 my-work 文件夹mkdir my-work# 进入到 my-work 文件夹下cd my-work

    Git - 的安装与使用

    PS:可以不用命令去创建,直接鼠标右键创建即可

    初始化本地仓库

    # 初始化本地仓库git init

    Git - 的安装与使用

    在初始化本地仓库之后可以看到在该目录下,有个一个默认被隐藏的 .git 文件夹,就说明 Git 仓库初始化成功

    Git - 的安装与使用

  • ③ 创建 README.md 文件

    创建一个文件,可以是任意格式的文件,这里我就以 README,md 文件为例

    # 创建 README.md 文件touch README.md

    Git - 的安装与使用

    Git - 的安装与使用

    PS:可以不用命令去创建,直接鼠标右键创建即可

  • ④ 使用 status 命令查看状态

    通过 status 命令我们可以看到本地仓库下文件状态

    # 查看文件提交状态git status

    Git - 的安装与使用

    这里我们看到 README,md 文件是红色的并且被标记为 Untracked files,表明这些文件没有被放在暂存区

  • ⑤ 使用 add 命令添加,并查看状态

    接下来我们就能透过 add 命令将文件添加到暂存区

    # 添加指定文件到暂存区git add README.md# 将当前目录及其所有子目录中的变更添加到暂存区git add .

    Git - 的安装与使用

    提交之后再使用 status 命令查看状态

    # 查看文件提交状态git status

    Git - 的安装与使用

    就能看到 README.md 文件从红色变为绿色,并且被标记为 Changes to be committed,表示该文件已经被添加到暂存区了

  • ⑥ 使用 commit 命令提交到本地仓库

    使用 commit 命令提交暂存区的内容到本地仓库

    # 使用 commit 命令提交暂存区的内容到本地仓库git commit -m \"first commit\"

    Git - 的安装与使用

  • ⑦ 使用 log 命令查看日志

    我们可以通过 log 命令来查看提交的记录

    Git - 的安装与使用

  • ⑧ 使用 remote add 管理远程仓库

    为你的本地 Git 仓库添加一个名为 \"origin\" 的远程仓库地址

    地址可从这里获取

    Git - 的安装与使用

    HTTPS 协议的 https://gitee.com/xxxxxxx/my-work.git 为例

    # 建立本地仓库与远程仓库的关联git remote add origin https://gitee.com/xxxxxxx/my-work.git

    Git - 的安装与使用

  • ⑨ 使用 push 推送提交内容到远程仓库

    通过 push 命令将本地仓库提交的内容推送到远程仓库

    # 推送本地提交内容至远程仓库git push -u origin \"master\"

    Git - 的安装与使用

    因为我说使用的是 HTTPS 协议进行远程控制的,所以在推送前会有一个身份验证,输入 Gitee 的账号密码即可

    Git - 的安装与使用

    完成之后就能看到创建的文件 README.md 被成功推送至远程了

    我们可以来到远程仓库 Gitee 上看到我们的提交记录

    Git - 的安装与使用

    并且看到 README.md 文件已经在远程仓库中存在了

在上述案例中我们使用的是 HTTPS 协议,也就是 https://gitee.com/xxxxxxx/my-work.git,那如果我们使用不是 HTTPS 协议,而是 SSH 协议 git@gitee.com:xxxxxxx/my-work.git,就不会在我们 push 的时候要求我们输入账号和密码了。因为 SSH 是通过 公钥/私钥 的方式来认证身份的。

根据 官方文档:初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置。

生成 SSH 公钥


  • ① 通过命令 ssh-keygen 生成 SSH Key

    ssh-keygen -t ed25519 -C \"Gitee SSH Key\"

    输出,如:

    Generating public/private ed25519 key pair.Enter file in which to save the key (/home/git/.ssh/id_ed25519):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/git/.ssh/id_ed25519Your public key has been saved in /home/git/.ssh/id_ed25519.pubThe key fingerprint is:SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH KeyThe key\'s randomart image is:+--[ED25519 256]--+| .o  || .+oo || ...O.o + || .= * = +. || .o +..S*. + ||. ...o o..+* * ||.E. o . ..+.O || . . ... o =. || ..oo. o.o |+----[SHA256]-----+

    中间通过三次回车键确定

  • ② 查看生成的 SSH 公钥和私钥

    ls ~/.ssh/

    输出:

    id_ed25519 id_ed25519.pub
    • 私钥文件 id_ed25519
    • 公钥文件 id_ed25519.pub
  • ③ 读取公钥文件 ~/.ssh/id_ed25519.pub

    cat ~/.ssh/id_ed25519.pub

    输出,如:

    ssh-ed25519 AAAA***5B Gitee SSH Key

    复制终端输出的公钥。

设置账户 SSH 公钥


用户可以通过主页右上角 「个人设置」->「安全设置」->「SSH 公钥」->「添加公钥」 ,添加生成的 public key 添加到当前账户中。

 

需要注意: 添加公钥需要验证用户密码

 Git - 的安装与使用
 
通过 ssh -T 测试,输出 SSH Key 绑定的用户名:

$ ssh -T git@gitee.comHi USERNAME! You\'ve successfully authenticated, but GITEE.COM does not provide shell access.

在添加完公钥后,用户可以在 「个人设置」->「安全设置」->「SSH 公钥」 浏览查看当前账户已经添加的 SSH 公钥,并对公钥进行管理/删除操作。


案例二:本地拉取远程仓库,修改文件并推送至远程

  1. 创建本地工作目录,初始化本地 Git 仓库
  2. 通过 clone 命令拉去远程仓库至本地
  3. 修改 README.md 文件
  4. 添加修改文件到暂存区
  5. 将暂存区中的文件提交到本地仓库
  6. 使用 push 推送提交内容到远程仓库

步骤如下:

  • ① 创建工作目录 my-work 下,并且进入到该目录下

    新建文件夹 my-work

    Git - 的安装与使用

    并进入到该文件夹下

    Git - 的安装与使用

    通过 init 命令初始化本地仓库

    # 初始化本地仓库git init

    Git - 的安装与使用

  • 通过 clone 命令拉去远程仓库至本地

    gitee 上找远程仓库的地址

    Git - 的安装与使用

    点击 克隆/下载

    Git - 的安装与使用

    可以通过 git clone git_address 命令将远程仓库克隆到本地

    # 克隆git clone your_git_address

    Git - 的安装与使用

    你就能看到远程仓库中的内容就被克隆到本地了

  • ③ 修改 README.md 文件

    在远程仓库中有个 README.md 文件,克隆之后该文件也会出现在本地一份

    Git - 的安装与使用

    我们再对该文件进行修改

    Git - 的安装与使用

    查看该文件状态

    # 查看 git 状态git status

    Git - 的安装与使用

    可以看到该文件没有被放在暂存区

  • ⑤ 添加修改文件到暂存区

    通过 add 命令将文件添加至暂存区

    # 添加文件夹下所有的文件到暂存区git add .

    Git - 的安装与使用

  • ⑥ 将暂存区中的文件提交到本地仓库

    使用 commit 命令将暂存区中的文件提交到本地仓库

    # 使用 commit 命令提交暂存区的内容到本地仓库git commit -m \"your remark\"

    Git - 的安装与使用

  • ⑦ 使用 push 推送提交内容到远程仓库

    再使用 push 命令将本地提交的修改推送到远程仓库

    # 推送本地提交内容至远程仓库git push -u origin \"master\"# 或者git push

    Git - 的安装与使用

    可以看到修改的信息已经被推到远程了,我们可以打开远程仓库,刷新下就能看到刚提交的记录了

    Git - 的安装与使用

    通常情况下,我们再对 git 项目下的文件就行修改之前,都会通过 pull 命令拉取最新的代码

    # 拉取代码git pull

八、总结

以上内容大概介绍了 Git 的安装与使用,作为一名开发人员几乎是离不开 Git 的,但是我觉得 Git 不仅仅是开发人员特有的工具,对于其它行业的人来说,在涉及文件协作的项目中,Git 同样能带来显著好处。