Git篇(三):吃透远程协作:SSH 密钥、分支、标签全流程实战指南

Git篇(三):吃透远程协作:SSH 密钥、分支、标签全流程实战指南

前言

在团队开发中,Git 本地提交只是代码管理的基础,真正实现多人协同、代码云端存储、版本同步分发,全靠Git 远程操作。很多新手刚上手就卡在 SSH 克隆失败、推拉代码冲突、标签分支同步混乱、忽略文件配置失效等问题上。

本篇整合 Git 远程全套核心实操:从SSH 协议密钥配置仓库克隆与远程关联,到.gitignore忽略规则命令别名简化操作再到标签版本管理多分支拉取推送远程分支清理冲突解决,把课堂笔记里零散的命令梳理成一套可直接落地的完整工作流,不管是个人托管代码还是团队多人协作,看完就能直接上手。

一、远程仓库两种传输协议:HTTPS 与 SSH

Git 连接远程仓库分为HTTPS、SSH 两大协议,二者核心差异在于鉴权方式:

  1. HTTPS 协议克隆地址以https://开头,每次推拉代码都需要输入账号密码 / 个人令牌,适合临时使用、不方便配置密钥的场景。
  2. 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.pub

3.平台配置公钥

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 -v

2.拉取远程代码:fetch & pull

git fetch:仅拉取远程所有更新,**不自动合并**本地分支,适合先查看更新再手动合并
git pull:等价于git fetch + git merge,拉取远程代码并自动合并到本地当前分支

3.推送本地代码到远程仓库

基础推送语法:git push 远程别名 本地分支:远程分支

# 本地分支与远程分支同名(master),可省略后半段远程分支名 git push origin master # 完整写法,本地master推送到远程master git push origin master:master

4.拉取远程分支代码

# 完整写法 git pull origin master:master # 分支同名简写 git pull origin master

三、.gitignore 忽略文件:过滤垃圾文件,强制保留指定文件

项目中编译产物、日志、本地配置文件不需要提交到远程,依靠.gitignore统一管理忽略规则。

1.基础忽略语法

# 忽略所有.so后缀文件 *.so # !代表反向规则:虽然忽略全部.so,但c.so强制纳入版本管理,不忽略 !c.so

2.排查文件被忽略原因

git check-ignore -v 文件名

执行后会输出哪一条 .gitignore 规则导致文件被忽略,快速排查配置错误。

3.特殊场景:已经写入忽略规则,但想单独提交某个文件

git add 文件名

四、Git 命令别名:简化高频输入

频繁敲长命令效率低,可自定义全局别名简化操作,配置后全系统生效。

1.给 status 配置别名 st

# --global 代表全局配置,不加仅当前仓库生效 git config (--global) alias.st status # 使用:等价 git status git st

2.删除已配置的别名

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.0

2 标签推送到远程仓库

# 推送单个指定标签到远程 git push origin v1.0 # 一次性推送本地所有标签至远程 git push origin --tags

3 删除远程标签

1.在远程直接删除

# origin 是你的远程别名,v1.0 是要删的标签名 git push origin --delete v1.0 # 简写旧语法(原理推送空内容覆盖远程标签): git push origin :v1.0

2.本地删除再推送

1.先删除本地对应标签
git tag -d v1.0
2.推送空分支覆盖远程标签完成删除
git push origin :v1.0

六、多分支远程协作:创建、关联、合并、清理分支

企业开发普遍采用多分支模式:master/main主分支存放稳定版本,dev开发分支迭代新功能,远程分支操作是团队协作核心。

1.分支查看命令

# 仅查看本地分支 git branch # 查看本地+所有远程分支 git branch -a # 查看分支对应远程追踪关系 git branch -v

2.本地分支关联远程分支

场景:远程已提前创建`dev`分支,本地新建分支并绑定远程追踪:

# 方式1:创建并切换dev分支,自动关联远程origin/dev git checkout -b dev origin/dev # 方式2:已有本地dev分支,手动绑定远程追踪 git branch --set-upstream-to=origin/dev dev

3.分支推送与拉取区别

# 明确指定远程主分支推送,不依赖本地分支追踪关系 git push origin master # 简写推送:本地分支已绑定远程追踪,直接git push即可 git push

4.分支合并两种方案

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 分支名

七、完整远程协作标准工作流总结

  1. 配置 SSH 密钥,使用 SSH 地址克隆远程仓库;
  2. 本地创建文件,git addgit commit提交本地版本;
  3. git pull拉取远程最新代码,提前规避冲突;
  4. git push推送本地分支 / 标签到远程仓库;
  5. 多分支开发:新建 dev 分支关联远程,开发完成本地 merge 合并到主分支;
  6. 版本发布:给稳定 commit 打 tag 标签,推送标签至远程;
  7. 项目迭代后,定期清理本地、远程废弃分支。

八、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% 新手远程报错问题。