尧图精选

深入 Git:它是如何记录世界的(三)

🕒 发布时间:2026/9/14 19:22:13 📁 来源:尧图网络
专栏Git 进化论个人主页手握风云目录一、分布式版本控制系统1.1. 核心概念1.2. 中央服务器二、远程仓库2.1. 新建远程仓库2.2. 克隆远程仓库2.3. 查看远程仓库信息三、远程推送与拉取3.1. git push 推送3.2. git pull 拉取四、.gitignore 忽略文件一、分布式版本控制系统1.1. 核心概念分布式版本控制系统最核心的特征是每一台参与开发的计算机上都保存着一份完整的版本库而非仅保存当前版本的文件快照。这也是Git和传统集中式版本工具最本质的区别之一。正因为版本库完整存在于本地开发者日常的绝大多数操作都可以完全离线完成不需要连接服务器。无论是提交代码、查看提交历史、创建与切换分支还是对比文件差异、回退版本所有操作都在本地直接执行不仅速度极快也不会因为网络中断或者服务器宕机而被迫停止工作。在多人协作的逻辑上分布式架构也和集中式完全不同。在集中式系统中所有开发者都必须向唯一的中央服务器提交代码离开服务器就无法完成版本操作。而在分布式系统中每个开发者的本地库都是完整独立的协作本质上是不同版本库之间互相交换修改。理论上任意两个开发者之间都可以直接互相推送各自的代码变更不需要经过第三方节点。比如两人同时修改了同一个文件只需要把各自的提交推送给对方就能同步彼此的修改看到对方的代码变动。这种架构也带来了远高于集中式系统的安全性与容错能力。在集中式版本管理中中央服务器是整个项目唯一的版本数据载体一旦服务器出现硬盘损坏、数据丢失等故障整个项目的全部版本历史都可能面临永久丢失的风险。而分布式系统天然具备多副本冗余的特性每一位开发者的电脑中都存有完整的版本库包含项目全部的提交记录、分支和标签信息。即便某一台设备彻底损坏也可以随意从其他任意一台设备上复制完整的版本库来恢复数据几乎不存在整体数据丢失的可能。1.2. 中央服务器不过在实际的开发场景中分布式版本控制系统通常还是会配置一台充当“中央服务器”的计算机但这台服务器并不是分布式架构的必需组件。它存在的核心意义是解决真实协作中的现实问题团队成员往往不在同一个局域网内两台电脑之间无法直接互相访问同时开发者的开机时间不同步无法保证随时可以接收他人的代码推送。有了一台24小时运行的中央服务器就有了一个所有人都可以随时访问的公共节点大家统一把修改推送到这里也从这里拉取其他人的更新让代码交换变得稳定、便捷。除此之外这台中央服务器也承担了公共备份的作用。对于开发者个人而言如果本地电脑出现硬盘故障、系统崩溃等意外本地的版本库可能会全部丢失。这时就可以从中央服务器上重新克隆一份完整的版本库快速恢复工作。需要明确的是这台“中央服务器”上的版本库和所有本地版本库在地位上是平等的并没有主次之分它只是团队约定俗成的同步基准而非拥有特殊权限的权威节点。二、远程仓库2.1. 新建远程仓库Gitee 页面点击右上角 选择新建仓库填写仓库名称、仓库介绍选择仓库权限开源所有人可见 / 私有仅成员可见。可选择初始化模板自动生成 README、.gitignore、开源许可证。创建完成仓库默认自带 master 主分支。2.2. 克隆远程仓库克隆远程仓库是本地与远程仓库建立协作关联的第一步执行 git clone 命令后Git 会将远程服务器上的完整版本库 —— 包括全部提交历史、所有分支与标签信息 —— 完整下载到本地计算机自动生成对应的本地仓库目录。克隆完成后Git 会默认将本地的 master 分支与远程仓库的 master 分支自动对应同时将这个远程仓库的默认别名设置为 origin后续本地的推送、拉取操作都可以通过这个别名来指代远程仓库。两种传输协议HTTPS、SSH。HTTPS 协议是门槛最低的克隆方式不需要提前做任何额外配置只要获取到仓库的 HTTPS 链接就可以直接操作非常适合新手快速上手或者临时访问仓库的场景。git clone HTTPS 链接origin 是默认的远程仓库名称fetch 和 push 是具有拉取和推送的权利。SSH 协议是日常开发更常用的克隆方式它基于非对称加密的公钥认证机制配置完成后所有推送、拉取操作都可以免密执行兼顾安全性与便捷性。其核心原理是用户在本地生成一对密钥私钥妥善保存在自己的电脑中绝不外泄公钥则上传到 Gitee 账号中后续连接远程仓库时服务器通过公钥完成身份校验不需要每次传输账号密码。配置步骤生成 SSH 密钥ssh‑keygen -t rsa -C 你的邮箱一路回车生成两个文件id_rsa私钥保密不能泄露、id_rsa.pub公钥上传 GiteeGitee 个人设置→SSH 公钥粘贴公钥内容保存认证。2.3. 查看远程仓库信息git remote只显示远程仓库别名克隆后远程仓库默认别名叫 origin。git remote -v查看完整远程地址包含抓取 (fetch) 和推送 (push) 地址没有推送权限看不到 push 地址。三、远程推送与拉取3.1.git push 推送git push 远程主机 本地分支:远程分支如果本地、远程分支同名可以简写为git push origin master。前提是本地 Git 配置的用户名、邮箱必须和 Gitee 账号保持一致否则提交报错。SSH 协议免密HTTPS 每次推送输入账号口令。3.2. git pull 拉取git pull 远程主机 远程分支:本地分支远程仓库被别人修改过本地版本落后远程执行拉取同步代码。如果本地、远程分支同名可以简写为git pull origin master四、.gitignore 忽略文件.gitignore 是 Git 用于过滤无需版本管理文件的核心机制它以纯文本规则的形式放在仓库根目录Git 会自动读取其中的规则匹配工作区中的文件和目录对符合规则的内容取消版本跟踪。它最核心的价值是解决开发场景中 “不该提交的文件” 的管理问题比如保存了本地数据库密码、接口密钥的个性化配置文件提交后会覆盖他人的本地环境还存在敏感信息泄露的风险再比如编译生成的中间文件、运行日志、依赖缓存目录、临时文件等都是程序运行自动生成的产物不具备版本保存的意义提交后只会让仓库体积膨胀增加团队同步的冗余成本。有了 .gitignore 统一规则后这类文件会被 Git 自动屏蔽既不会出现在 git status 的未跟踪提示中也不会被误提交到远程仓库。.gitignore 可以在Gitee 新建远程仓库时直接生成创建仓库的页面中“初始化仓库” 选项里包含 .gitignore 模板选择可以根据项目的开发语言如 Java、Python、前端等选择对应模板Gitee 会自动生成该技术栈下常用的忽略规则无需从零编写适合项目快速初始化。.gitignore支持通配符实现批量过滤常见匹配方式有三类一是后缀匹配比如*.ini、.so、.log会分别过滤所有对应后缀的文件二是精确匹配单个文件直接写文件名即可只忽略该特定文件三是目录匹配比如/dist/、node_modules/会过滤对应整个目录路径前加斜杠可限定匹配层级避免不同目录下的同名文件被误忽略。如果大范围的忽略规则误伤了需要保留的文件可以使用!开头的例外规则它优先级高于普通规则用于声明对应文件或目录不被忽略。典型场景是用.*忽略所有隐藏文件时.gitignore本身也会被忽略追加!.gitignore就能让Git正常跟踪这个文件批量忽略某个目录后也可以用!单独放行目录里的特定文件。最后需要注意的是.gitignore文件本身也属于项目的配置文件需要和普通代码一样执行git add、git commit、git push提交并推送到远程仓库。这样团队所有成员拉取代码后都会获得统一的忽略规则保证全团队的过滤行为一致避免出现不同成员提交不同冗余文件的情况。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →