ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Git 完全指南(三):远程仓库与标签管理

Git 完全指南(三):远程仓库与标签管理 目录引言1~远程操作——理解分布式版本控制系统1.1 本地 vs 远程1.2 分布式的核心思想1.3 为什么需要中央服务器1.4 远程仓库2~远程操作——创建远程仓库2.1 新建远程项目仓库2.2 填写基本信息2.3 创建成功2.4 仓库模板说明3~远程操作——克隆远程仓库_HTTPSgit clone3.1 获取仓库链接3.2 协议说明3.3 执行克隆3.4 克隆后的目录结构3.5 查看远程仓库信息git remote -v4~远程操作——克隆远程仓库_SSHgit clone4.1 SSH 克隆尝试4.2 配置 SSH 密钥第一步生成 SSH Key第二步添加公钥到 Gitee第三步验证克隆5~远程操作——向远程仓库推送git push5.1 本地开发并提交5.2 查看推送提示5.3 推送命令格式5.4 执行推送5.5 验证推送结果6~远程操作——拉取远程仓库git pull6.1 模拟远程更新6.2 推送命令格式6.3 本地拉取更新6.4 git pull 的本质7~远程操作——忽略特殊文件.gitignore7.1 为什么需要忽略7.2 创建 .gitignore 文件7.3 编写忽略规则7.4 验证忽略效果7.5 强制添加被忽略的文件8~远程操作——配置命令别名8.1 别名配置8.2 验证别名8.3 常用别名推荐8.4 学习建议9~标签管理——操作标签git tag9.1 理解标签9.2 创建标签9.3 标签的底层存储9.4 给历史提交打标签9.5 查看标签信息9.6 创建带说明的标签9.7 删除本地标签10~标签管理——推送标签到远程10.1 推送单个标签10.2 推送所有本地标签10.3 删除远程标签本节命令速查表结语引言这是《Git 完全指南》系列的第三篇。在前两篇中我们掌握了 Git 的本地操作和分支管理。但 Git 的真正威力在于分布式协作——你的代码不再局限于本地而是可以无缝连接到云端与团队成员共享、同步、迭代。分布式版本控制改变了传统开发的协作模式每个人的电脑都是完整的版本库中央服务器只是交换中心而非唯一权威。这种设计既保证了离线开发的自由又实现了多人协作的高效。本系列规划篇章内容状态一本地仓库基础操作安装配置、核心概念、文件操作、版本回退已发布二分支管理创建切换、合并冲突、分支策略、Bug 分支已发布三远程仓库与标签管理远程仓库、克隆推送、忽略文件、标签版本本文四多人协作与冲突解决多人工作流、代码审查、分支保护待发布五企业级开发模型Git Flow、GitHub Flow、CI/CD 集成待发布本文将带你完成从单机开发到云端协作的关键跨越注册 Gitee 账号、创建远程仓库、配置 SSH 密钥、掌握git push与git pull的双向同步以及用标签Tag为版本发布打上永久标记。这些技能是团队协作的基石也是你迈向专业开发者的重要一步。适合人群已掌握 Git 本地操作和分支管理希望学习远程协作的开发者前置知识建议先阅读《Git 完全指南一》和《Git 完全指南二》1~远程操作——理解分布式版本控制系统1.1 本地 vs 远程回顾之前所学所有操作——工作区、暂存区、版本库——都发生在本地即你自己的电脑。但 Git 的完整形态是分布式版本控制系统Distributed Version Control System, DVCS这意味着什么1.2 分布式的核心思想每台电脑都是完整的版本库。┌─────────┐ ┌─────────┐ ┌─────────┐ │ 你的电脑 │ ←→ │ 同事A │ ←→ │ 同事B │ │ 完整仓库 │ │ 完整仓库 │ │ 完整仓库 │ └─────────┘ └─────────┘ └─────────┘ ↑ ↑ ↑ └──────────────┴──────────────┘ 互相推送/拉取修改工作方式你在本地修改文件A同事也在本地修改文件A。完成后你们互相推送push各自的修改即可看到对方的变更。优势离线工作无需联网本地即可完成版本控制安全性高每个人的电脑都有完整备份某台机器损坏不影响整体灵活协作任意两人之间可直接交换修改1.3 为什么需要中央服务器理论上分布式系统不需要中心节点。但实际场景中问题说明网络隔离同事可能不在同一局域网机器状态同事的电脑可能关机或故障交换不便两两之间推送效率低下因此通常引入一台24小时运行的服务器作为交换中心┌─────────┐ ┌─────────┐ ┌─────────┐ │ 你的电脑 │ ←→ │ 中央服务器 │ ←→ │ 同事电脑 │ │ 完整仓库 │ │ 裸仓库 │ │ 完整仓库 │ └─────────┘ └─────────┘ └─────────┘ ↑ ↑ ↑ └──────────────┴──────────────┘ 推送(push) / 拉取(pull)关键认知中央服务器只是方便交换修改没有它大家照样能工作。这与传统的集中式版本控制系统如 SVN有本质区别——SVN 的服务器是核心客户端只有工作副本。1.4 远程仓库Git 仓库可以分布到任意机器上。克隆clone是获取远程仓库的标准方式原始仓库 ──→ git clone ──→ 你的电脑完整副本常见问题我只有一台电脑怎么练习远程操作回答理论上可以在一台电脑上克隆多个仓库不同目录即可但这毫无意义——硬盘损坏会导致所有副本同时丢失。实际方案使用专业的代码托管平台平台特点适用场景GitHubGitHub · Change is constant. GitHub keeps you ahead. · GitHub全球最大生态丰富开源项目、国际化团队Gitee码云工作台 - Gitee.com国内访问快中文友好国内开发、学习练习GitLab可私有化部署企业内部、安全要求高本文统一采用Gitee码云进行演示访问速度快适合国内用户学习。2~远程操作——创建远程仓库2.1 新建远程项目仓库登录 Gitee 后点击右上角 → 新建仓库2.2 填写基本信息2.3 创建成功从创建好的远程仓库中我们便能看到之前在本地学习过的分⽀也存在于远程仓库中并被管理起来了。刚创建的仓库有且只有⼀个默认的master分⽀。2.4 仓库模板说明创建时 Gitee 提供了三个模板选项Readme文件这个就是告诉别人这个项目是干嘛的lssue模板文件这是让有问题的人和仓库里的人员进行交流的一个地方Pull Request模板文件这就是个合并申请单我们一般在开发的时候不会直接dev合并到merge而是dev给PR这个申请单里面要说明为什么要合并或者有什么功能这个申请单就是给管理员看的管理员一旦同意了我们才可以将自己的代码merge到这个master上去这也不是我们自己操作而是在平台里操作模板作用使用场景README 文件项目说明文档必勾选介绍项目用途、安装方法、使用说明Issue 模板问题反馈模板团队协作时规范 Bug 报告和功能建议Pull Request 模板合并申请模板团队开发时规范代码审查流程Pull Request 详解开发时不直接merge而是先提交 PR合并申请说明修改内容和原因。管理员审查通过后在平台点击合并。这是企业开发的标准流程避免未经审核的代码进入主分支。3~远程操作——克隆远程仓库_HTTPSgit clone3.1 获取仓库链接进入仓库主页点击克隆/下载按钮复制 HTTPS 链接3.2 协议说明Git 支持两种主要传输协议协议特点适用场景HTTPS无需配置直接克隆首次使用、快速上手SSH需配置密钥免密推送长期开发、频繁推送SSH 优势配置公钥后推送无需反复输入密码更安全便捷。3.3 执行克隆注意不能在已有本地仓库的目录下执行克隆需要注意的是我们克隆远程仓库的时候不能在本地仓库的目录下执行克隆# 查看当前目录结构 [rootVM-0-2-centos ~]# tree . |-- 2026_8_27 | |-- hello.txt | |-- test | |-- test.c | -- test.txt -- gitcode |-- test1 -- test2 2 directories, 6 files # 克隆远程仓库会在当前目录新建文件夹 [rootVM-0-2-centos ~]# git clone https://gitee.com/ling-qian_1_0/git.git Cloning into git... remote: Enumerating objects: 7, done. remote: Counting objects: 100% (7/7), done. remote: Compressing objects: 100% (7/7), done. remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) Unpacking objects: 100% (7/7), done. # 查看克隆结果 [rootVM-0-2-centos ~]# ls 2026_8_27 git gitcode3.4 克隆后的目录结构[rootVM-0-2-centos ~]# ls -a ./git . .. .git .gitee README.en.md README.md文件/目录说明.git本地版本库与之前学习的本地仓库结构完全一致.giteeGitee 平台配置文件README.md/README.en.md中英文项目说明origin远程仓库的默认名称此时克隆下来的状态就是如下图克隆下来后不仅有一个远程仓库还有一个 本地仓库本地仓库里的内容就跟我们先前所讲的本地仓库内容 一模一样 3.5 查看远程仓库信息git remote -v# 进入克隆的仓库 [rootVM-0-2-centos ~]# cd git # 查看远程仓库名称 [rootVM-0-2-centos git]# git remote origin # 查看详细信息 [rootVM-0-2-centos git]# git remote -v origin https://gitee.com/ling-qian_1_0/git.git (fetch) # 拉取地址 origin https://gitee.com/ling-qian_1_0/git.git (push) # 推送地址originGit 自动为远程仓库分配的默认名称可以自定义。4~远程操作——克隆远程仓库_SSHgit clone4.1 SSH 克隆尝试[rootVM-0-2-centos ~]# git clone gitgitee.com:ling-qian_1_0/git.git Cloning into git... The authenticity of host gitee.com (180.76.199.13) cant be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQpKkGYoFgbVr17bmjey0Wc. ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added gitee.com,180.76.199.13 (ECDSA) to the list of known hosts. Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.错误原因未将本地公钥添加到 Gitee 账户服务器拒绝连接。4.2 配置 SSH 密钥第一步生成 SSH Key# 检查是否已有密钥 [rootVM-0-2-centos ~]# ls .ssh authorized_keys known_hosts # 生成新密钥使用你的邮箱 [rootVM-0-2-centos ~]# ssh-keygen -t rsa -C 3139198270qq.com Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): # 回车使用默认路径 Enter passphrase (empty for no passphrase): # 回车不设密码 Enter same passphrase again: # 回车确认 Your identification has been saved in /root/.ssh/id_rsa. # 私钥 Your public key has been saved in /root/.ssh/id_rsa.pub. # 公钥⚠️安全提示id_rsa是私钥绝不能泄露id_rsa.pub是公钥可以放心提供给第三方平台。第二步添加公钥到 Gitee# 查看公钥内容 [rootVM-0-2-centos ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... 3139198270qq.com登录 Gitee → 点击头像 →设置左侧菜单选择SSH 公钥粘贴公钥内容点击确定第三步验证克隆[rootVM-0-2-centos ~]# git clone gitgitee.com:ling-qian_1_0/git.git Cloning into git... remote: Enumerating objects: 7, done. remote: Counting objects: 100% (7/7), done. remote: Compressing objects: 100% (7/7), done. remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) Receiving objects: 100% (7/7), done. [rootVM-0-2-centos ~]# ls 2026_8_27 git gitcode✅成功多人协作Gitee/GitHub 支持添加多个公钥团队成员各自添加自己的 Key即可在同一仓库协作开发。5~远程操作——向远程仓库推送git push5.1 本地开发并提交[rootVM-0-2-centos git]# echo hello git test1 [rootVM-0-2-centos git]# git add . [rootVM-0-2-centos git]# git commit -m create test1 [master b1c6889] create test1 1 file changed, 1 insertion() create mode 100644 test15.2 查看推送提示[rootVM-0-2-centos git]# git status # On branch master # Your branch is ahead of origin/master by 1 commit. # (use git push to publish your local commits) # nothing to commit, working directory clean状态解读本地master分支领先远程origin/master1 个提交Git 建议使用git push发布本地提交。5.3 推送命令格式# 完整格式 git push 远程主机名 本地分支名:远程分支名 # 简写格式本地与远程分支名相同 git push 远程主机名 本地分支名5.4 执行推送[rootVM-0-2-centos git]# git push origin master Warning: Permanently added the ECDSA host key for IP address 180.76.198.225 to the list of known hosts. Counting objects: 4, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 271 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Powered by GITEE.COM [1.1.23] To gitgitee.com:ling-qian_1_0/git.git 08e4c19..b1c6889 master - master输出解读信息含义Counting objects计算需要传输的对象Compressing objects压缩数据Writing objects写入远程仓库master - master本地 master 推送到远程 master5.5 验证推送结果登录 Gitee 仓库页面可以看到test1文件已成功上传。SSH 优势配置 SSH 后推送无需输入密码。若使用 HTTPS每次推送都需输入账号密码。6~远程操作——拉取远程仓库git pull6.1 模拟远程更新在 Gitee 网页上直接编辑test1文件添加内容保存提交模拟同事推送了更新。6.2 推送命令格式# 完整格式 git push 远程主机名 本地分支名:远程分支名 # 简写格式本地与远程分支名相同 git push 远程主机名 本地分支名6.3 本地拉取更新# 查看当前文件内容 [rootVM-0-2-centos git]# cat test1 hello git # 执行拉取 [rootVM-0-2-centos git]# git pull origin master remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0) Unpacking objects: 100% (3/3), done. From gitee.com:ling-qian_1_0/git * branch master - FETCH_HEAD Updating b1c6889..b63007b Fast-forward test1 | 1 1 file changed, 1 insertion() # 验证更新 [rootVM-0-2-centos git]# cat test1 hello git 第一次修改6.4git pull的本质git pullgit fetch拉取远程数据git merge合并到本地分支远程仓库 ──→ git fetch ──→ 远程跟踪分支 ──→ git merge ──→ 本地分支 ↑___________________________________________↓ git pull一步完成⚠️注意本文仅在演示场景下修改远程仓库内容。实际开发中不要在远程仓库直接修改代码应通过本地开发 → 推送的标准流程。7~远程操作——忽略特殊文件.gitignore7.1 为什么需要忽略开发中有些文件不应提交到版本库文件类型示例原因配置文件config.ini包含数据库密码等敏感信息编译产物*.o,*.exe可由源码重新生成依赖目录node_modules/体积大可通过包管理器安装临时文件*.log,.tmp无版本控制价值7.2 创建.gitignore文件方式一创建仓库时勾选推荐方式二手动创建[rootVM-0-2-centos git]# touch .gitignore [rootVM-0-2-centos git]# nano .gitignore7.3 编写忽略规则[rootVM-0-2-centos git]# cat .gitignore # 忽略所有 .c 和 .txt 文件 *.c *.txt # 但保留 d.c 文件例外规则 !d.c规则语法模式含义*.c忽略所有.c结尾的文件*.txt忽略所有.txt结尾的文件!d.c!表示例外不忽略d.c#注释行7.4 验证忽略效果[rootVM-0-2-centos git]# touch 1.c 2.txt d.c [rootVM-0-2-centos git]# ls 1.c 2.txt d.c README.en.md README.md test1 [rootVM-0-2-centos git]# git add . [rootVM-0-2-centos git]# git status # On branch master # Changes to be committed: # (use git reset HEAD file... to unstage) # # new file: .gitignore # new file: d.c #结果1.c和2.txt被忽略只有d.c、.gitignore被追踪。7.5 强制添加被忽略的文件# 方式一强制添加 [rootVM-0-2-centos git]# git add -f 1.c # 方式二检查忽略规则 [rootVM-0-2-centos git]# git check-ignore -v 2.txt .gitignore:3:*.txt 2.txt建议.gitignore文件本身应提交到版本库方便团队成员共享相同的忽略规则。8~远程操作——配置命令别名8.1 别名配置Git 支持为常用命令设置简短别名# 将 git status 简化为 git st [rootVM-0-2-centos git]# git config --global alias.st status8.2 验证别名[rootVM-0-2-centos git]# git st On branch master Your branch is up to date with origin/master. nothing to commit, working tree clean8.3 常用别名推荐别名原始命令说明ststatus查看状态cocheckout切换分支brbranch分支操作cicommit提交lglog --graph --oneline图形化日志多词命令别名需用引号包裹git config --global alias.lg log --graph --prettyoneline --abbrev-commit8.4 学习建议不推荐新手阶段大量使用别名。先熟练掌握完整命令等工作熟练后再根据个人习惯配置避免过度依赖别名导致遗忘原命令。9~标签管理——操作标签git tag9.1 理解标签标签Tag是对某次commit的永久标识相当于给提交起了一个有意义的别名。对比Commit IDTag形式f477b9bf...40位哈希v1.0简洁语义化记忆难度极难极易用途内部追踪版本发布、里程碑标记典型场景项目发布v1.0版本时给最后一次提交打上标签方便后续快速定位。9.2 创建标签# 确认当前分支 [rootVM-0-2-centos git]# git branch * master # 给最新提交打标签 [rootVM-0-2-centos git]# git tag v1.0 # 查看所有标签 [rootVM-0-2-centos git]# git tag v1.09.3 标签的底层存储[rootVM-0-2-centos git]# tree .git/refs .git/refs/ |-- heads | -- master |-- remotes | -- origin | |-- HEAD | -- master -- tags -- v1.0 # ← 标签文件 [rootVM-0-2-centos git]# cat .git/refs/tags/v1.0 f477b9bf7924b6e12fa846ff1dc680ecf59295a2本质标签文件存储的是指向特定commit id的指针。9.4 给历史提交打标签# 查看提交历史 [rootVM-0-2-centos git]# git log --prettyoneline f477b9bf7924b6e12fa846ff1dc680ecf59295a2 强制 add 1.c 8e0c1af3495511c11271b0320a809519e33f9e61 .gitignore test b63007bdcc46a349cb064a8ff1a8752f1553f80f update test1. ... # 给指定 commit 打标签 [rootVM-0-2-centos git]# git tag v0.9 8e0c1af3495511c11271b0320a809519e33f9e61 [rootVM-0-2-centos git]# git tag v0.9 v1.0 标签按字母顺序排列而非时间顺序。9.5 查看标签信息[rootVM-0-2-centos git]# git show v1.0 commit f477b9bf7924b6e12fa846ff1dc680ecf59295a2 Author: ling-qian_1_0 3139198270qq.com Date: Thu Sep 3 09:53:39 2026 0800 强制 add 1.c9.6 创建带说明的标签git tag -a 标签名 -m 说明文字 [commit_id]9.7 删除本地标签[rootVM-0-2-centos git]# git tag -d v0.9 Deleted tag v0.9 (was 8e0c1af) [rootVM-0-2-centos git]# git tag v1.0 标签默认只存储在本地删除本地标签是安全的不会影响远程。10~标签管理——推送标签到远程10.1 推送单个标签[rootVM-0-2-centos git]# git push origin v1.0 Total 0 (delta 0), reused 0 (delta 0) remote: Powered by GITEE.COM [1.1.23] To gitgitee.com:ling-qian_1_0/git.git * [new tag] v1.0 - v1.0推送成功后在 Gitee 仓库页面可以看到标签已更新。10.2 推送所有本地标签git push origin --tags10.3 删除远程标签两步操作# 第一步删除本地标签 [rootVM-0-2-centos git]# git tag -d v1.0 Deleted tag v1.0 (was f477b9b) # 第二步推送删除到远程 [rootVM-0-2-centos git]# git push origin :refs/tags/v1.0 remote: Powered by GITEE.COM [1.1.23] To gitgitee.com:ling-qian_1_0/git.git - [deleted] v1.0 远程标签删除语法git push origin :refs/tags/标签名本节命令速查表命令作用git clone url克隆远程仓库到本地git remote -v查看远程仓库信息git push origin branch推送本地分支到远程git pull origin branch拉取远程分支并合并git tag name给最新提交打标签git tag name commit给指定提交打标签git push origin tag推送标签到远程git push origin --tags推送所有标签git tag -d name删除本地标签git push origin :refs/tags/name删除远程标签结语至此我们已经完整掌握了 Git 从本地到远程的核心操作。从最初的git clone克隆仓库到理解HTTPS 与 SSH两种协议的安全差异从第一次git push origin master推送代码到熟练使用git pull同步团队更新从配置.gitignore保护敏感信息到用git tag v1.0标记发布里程碑——你已经具备了独立使用 Git 进行远程协作的能力。远程协作的核心理念回顾原则说明本地先行所有操作先在本地完成确认无误后再推送频繁同步及时pull团队更新减少冲突概率标签发布用 Tag 标记版本节点便于追溯和回滚忽略敏感密码、密钥等绝不提交.gitignore是防线但真正的团队协作远不止一人一仓库。在后续的系列文章中我们将继续探索篇章核心内容四多人协作与冲突解决多人同时开发的工作流、Pull Request 代码审查、分支保护策略五企业级开发模型Git Flow、GitHub Flow、Trunk-based 等主流开发模式CI/CD 自动化集成最后送给你几个远程协作的实践心得原则说明SSH 优先配置一次终身免密安全又便捷提交前先拉取pull后再push避免覆盖他人代码标签要推送本地标签别忘了git push origin --tags别名适度用熟悉原命令后再配置别名避免遗忘根本练习建议创建一个 Gitee 仓库将本地项目推送上去模拟同事修改-你拉取更新-你再推送的完整协作流程体验真正的分布式开发。从本地到云端从个人到团队Git 让代码的流动突破了物理边界。愿你在协作的海洋中既能独立航行也能与伙伴并肩破浪。
返回列表