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

相关推荐
FoldWinCard2 小时前
D4 Linux 进程 内存 等命令
linux·运维·服务器
番茄育学园2 小时前
2026表格自动化工具实测:四个不同方案,适配不同办公场景
运维·自动化
j7~2 小时前
【Linux 系统】二十.进程间通信(共享内存、消息队列、信号量)
linux·运维·消息队列·共享内存·信号量·system v
裤兜里有钱3 小时前
关于Xshell连接虚拟机Linux失败的主要原因
linux·运维·服务器
有毒的教程3 小时前
Ansible批量操作自动化完整教程:批量部署服务、配置同步、软件更新实战
运维·自动化·ansible
辞旧 lekkk3 小时前
CMake工程指南(一)
linux·运维·服务器·开发语言·qt·学习·萌新
oushaojun23 小时前
deepseek教我什么是docker
运维·docker·容器
jieyucx3 小时前
Windows11 & Linux 环境Docker部署与镜像拉取效率优化实战指南
linux·运维·docker
Junsir大斗师3 小时前
keepalived实现ubuntu22服务器高可用
运维·ubuntu·iptables·keepalived·二层透明网桥