Git篇(三):吃透远程协作:SSH 密钥、分支、标签全流程实战指南
前言
在团队开发中,Git 本地提交只是代码管理的基础,真正实现多人协同、代码云端存储、版本同步分发,全靠Git 远程操作。很多新手刚上手就卡在 SSH 克隆失败、推拉代码冲突、标签分支同步混乱、忽略文件配置失效等问题上。
本篇整合 Git 远程全套核心实操:从SSH 协议密钥配置、仓库克隆与远程关联,到.gitignore忽略规则、命令别名简化操作,再到标签版本管理、多分支拉取推送、远程分支清理冲突解决,把课堂笔记里零散的命令梳理成一套可直接落地的完整工作流,不管是个人托管代码还是团队多人协作,看完就能直接上手。
一、远程仓库两种传输协议:HTTPS 与 SSH
Git 连接远程仓库分为HTTPS、SSH 两大协议,二者核心差异在于鉴权方式:
- HTTPS 协议克隆地址以
https://开头,每次推拉代码都需要输入账号密码 / 个人令牌,适合临时使用、不方便配置密钥的场景。 - SSH 协议(推荐长期开发使用)依靠公钥加密、私钥登录实现免密操作,配置完成后永久不用重复输账号密码;核心限制:本地无对应 SSH 密钥,完全无法通过 SSH 地址克隆仓库。
1 SSH 密钥完整配置流程
密钥对由公钥和私钥配套组成,公钥可以公开分发,相当于一把公开的锁,私钥只能自己妥善保管、绝不外泄,是唯一能开锁的钥匙;远程服务器、Git 平台保存你的公钥后,会通过加密信息校验你的私钥,匹配成功就能免密码完成身份验证,既不用频繁输密码,安全性也远高于普通密码。
1.生成 RSA 密钥对
打开终端执行命令,邮箱替换为自己 Gitee/GitHub 注册邮箱:
ssh-keygen -t rsa -C "你的注册邮箱"执行后一路回车,默认在用户目录生成.ssh 隐藏文件夹,内部包含两个文件:
1.id_rsa:私钥(本地保存,严禁泄露)
2.id_rsa.pub:公钥(复制全部内容粘贴到远程仓库平台的 SSH 公钥配置页)
2.检查本地密钥文件
ls ~/.ssh查看公钥
cat ~/.ssh/id_rsa.pub3.平台配置公钥
4.本地仓库推送
git remote add origin 远程仓库地址查看是否绑定成功
git remote -v首次推送绑定分支
git push -u origin master注意:首次推送直接git push 会报错
5.SSH 克隆仓库
git clone git@gitee.com:用户名/仓库名.git对于4 5,是两种方案
后序进行提交,直接执行add commit push即可
二、远程仓库基础操作:查看、拉取、推送
1 查看已关联的远程仓库
# 简略查看远程仓库别名(默认远程仓库别名origin) git remote # 查看远程仓库详细地址(区分HTTPS/SSH地址) git remote -v2.拉取远程代码:fetch & pull
git fetch:仅拉取远程所有更新,**不自动合并**本地分支,适合先查看更新再手动合并
git pull:等价于git fetch + git merge,拉取远程代码并自动合并到本地当前分支
3.推送本地代码到远程仓库
基础推送语法:git push 远程别名 本地分支:远程分支
# 本地分支与远程分支同名(master),可省略后半段远程分支名 git push origin master # 完整写法,本地master推送到远程master git push origin master:master4.拉取远程分支代码
# 完整写法 git pull origin master:master # 分支同名简写 git pull origin master三、.gitignore 忽略文件:过滤垃圾文件,强制保留指定文件
项目中编译产物、日志、本地配置文件不需要提交到远程,依靠.gitignore统一管理忽略规则。
1.基础忽略语法
# 忽略所有.so后缀文件 *.so # !代表反向规则:虽然忽略全部.so,但c.so强制纳入版本管理,不忽略 !c.so2.排查文件被忽略原因
git check-ignore -v 文件名执行后会输出哪一条 .gitignore 规则导致文件被忽略,快速排查配置错误。
3.特殊场景:已经写入忽略规则,但想单独提交某个文件
git add 文件名四、Git 命令别名:简化高频输入
频繁敲长命令效率低,可自定义全局别名简化操作,配置后全系统生效。
1.给 status 配置别名 st
# --global 代表全局配置,不加仅当前仓库生效 git config (--global) alias.st status # 使用:等价 git status git st2.删除已配置的别名
git config (--global) --unset alias.st五、版本标签 Tag 管理:给发布版本打标记
Tag 用于给某次稳定commit绑定版本号(如 v1.0、v0.9),区分正式发布版本,分为本地标签、远程标签两套操作。
1 本地标签操作
# 1. 给最新commit快速打轻量标签 git tag v1.0 # 2. 指定某次commitID打标签(历史版本标记) git tag v0.9 commitID # 3. 创建带描述的附注标签(推荐,可写版本说明) git tag -a v1.0 -m "1.0正式发布版本" commitID # 4. 查看所有本地标签 git tag # 5. 查看指定标签详情 git show v1.0 # 6. 删除本地标签 git tag -d v1.02 标签推送到远程仓库
# 推送单个指定标签到远程 git push origin v1.0 # 一次性推送本地所有标签至远程 git push origin --tags3 删除远程标签
1.在远程直接删除
# origin 是你的远程别名,v1.0 是要删的标签名 git push origin --delete v1.0 # 简写旧语法(原理推送空内容覆盖远程标签): git push origin :v1.02.本地删除再推送
1.先删除本地对应标签
git tag -d v1.02.推送空分支覆盖远程标签完成删除
git push origin :v1.0六、多分支远程协作:创建、关联、合并、清理分支
企业开发普遍采用多分支模式:master/main主分支存放稳定版本,dev开发分支迭代新功能,远程分支操作是团队协作核心。
1.分支查看命令
# 仅查看本地分支 git branch # 查看本地+所有远程分支 git branch -a # 查看分支对应远程追踪关系 git branch -v2.本地分支关联远程分支
场景:远程已提前创建`dev`分支,本地新建分支并绑定远程追踪:
# 方式1:创建并切换dev分支,自动关联远程origin/dev git checkout -b dev origin/dev # 方式2:已有本地dev分支,手动绑定远程追踪 git branch --set-upstream-to=origin/dev dev3.分支推送与拉取区别
# 明确指定远程主分支推送,不依赖本地分支追踪关系 git push origin master # 简写推送:本地分支已绑定远程追踪,直接git push即可 git push4.分支合并两种方案
1.线上 PR(Pull Request)
在 Gitee/GitHub 网页端发起 PR,将 dev 分支代码合并进 master,适合严格代码审核的团队。
2.本地合并(快速合并)
# 切换到主分支 git checkout master # 把dev分支代码合并到master git merge dev # 合并完成推送至远程 git push origin master冲突处理:推拉代码、分支合并出现冲突时,必须先本地手动修改冲突文件,重新 add、commit 后再推送远程。
5.清理失效远程分支
远程分支被他人删除后,本地git branch -a仍会显示残留记录,同步清理:
# 查看远程仓库完整信息 git remote show origin # 同步清理本地不存在的远程分支记录 git remote prune origin # 删除本地无用分支 git branch -d 分支名七、完整远程协作标准工作流总结
- 配置 SSH 密钥,使用 SSH 地址克隆远程仓库;
- 本地创建文件,
git add→git commit提交本地版本; git pull拉取远程最新代码,提前规避冲突;git push推送本地分支 / 标签到远程仓库;- 多分支开发:新建 dev 分支关联远程,开发完成本地 merge 合并到主分支;
- 版本发布:给稳定 commit 打 tag 标签,推送标签至远程;
- 项目迭代后,定期清理本地、远程废弃分支。
八、git 常用命令总结
| 类名 | 命令 | 说明 |
|---|---|---|
| 配置与初始化 | git config --global user.name "名字" | 设置全局用户名 |
git config --global user.email "邮箱" | 设置全局邮箱 | |
git init | 初始化一个新的Git仓库 | |
git clone <url> | 克隆远程仓库到本地 | |
| 文件操作与暂存 | git add <file> | 将指定文件添加到暂存区 |
git add . | 将所有修改/新增文件添加到暂存区 | |
git rm <file> | 删除文件并记录到暂存区 | |
git mv <old> <new> | 重命名或移动文件 | |
| 提交与历史查看 | git commit -m "描述" | 提交暂存区内容到本地仓库 |
git commit --amend | 修改最近一次提交(补充或修改) | |
git log | 查看提交历史记录 | |
git log --oneline | 以简洁单行格式查看历史 | |
git status | 查看当前工作区和暂存区状态 | |
git diff | 查看工作区与暂存区的差异 | |
| 分支管理 | git branch | 查看本地所有分支 |
git branch <name> | 创建新分支 | |
git checkout <name> | 切换到指定分支 | |
git checkout -b <name> | 创建并切换到新分支 | |
git switch <name> | 切换分支(新版推荐) | |
git switch -c <name> | 创建并切换分支(新版推荐) | |
git branch -d <name> | 删除已合并的分支 | |
git branch -D <name> | 强制删除未合并的分支 | |
| 合并与变基 | git merge <branch> | 将指定分支合并到当前分支 |
git rebase <branch> | 将当前分支变基到指定分支 | |
git rebase --continue | 解决冲突后继续变基 | |
git rebase --abort | 中止变基操作 | |
git cherry-pick <commit> | 挑选指定提交应用到当前分支 | |
| 远程仓库操作 | git remote -v | 查看远程仓库地址 |
git remote add origin <url> | 添加远程仓库 | |
git fetch | 从远程仓库拉取最新内容(不合并) | |
git pull | 拉取远程内容并自动合并 | |
git push | 推送本地提交到远程仓库 | |
git push -u origin <branch> | 首次推送并关联远程分支 | |
| 撤销与恢复 | git checkout -- <file> | 丢弃工作区文件的修改 |
git restore <file> | 恢复文件(新版推荐) | |
git reset HEAD <file> | 将文件从暂存区撤出 | |
git reset --soft <commit> | 撤销提交,保留暂存区和工作区 | |
git reset --hard <commit> | 强制回退到指定提交(慎用) | |
git revert <commit> | 创建新提交来撤销指定提交(安全) | |
git stash | 暂存当前修改 | |
git stash pop | 恢复暂存的修改 | |
| 标签管理 | git tag | 查看所有标签 |
git tag <name> | 创建轻量标签 | |
git tag -a <name> -m "描述" | 创建带注释的标签 | |
git push origin <tag> | 推送指定标签到远程 | |
git push origin --tags | 推送所有标签到远程 | |
git tag -d <name> | 删除本地标签 |
结尾
Git 远程操作没有复杂原理,核心是理清本地仓库、远程仓库、分支、标签四者的关联关系。SSH 密钥解决免密登录,分支实现多人并行开发,Tag 规范版本发布,ignore 过滤冗余文件,把这套命令熟练使用后,就能完全驾驭团队代码协同开发,避开 90% 新手远程报错问题。