Ubuntu下Git与Gitee配置全攻略:从SSH密钥到实战协作

📅 2026/8/15 1:29:00
Ubuntu下Git与Gitee配置全攻略:从SSH密钥到实战协作
1. 项目概述为什么在Ubuntu上搞定Git和Gitee是开发者的必修课如果你刚接触Ubuntu或者从Windows/macOS切换过来想在Linux环境下顺畅地进行代码版本管理那么配置好Git并连接上国内的代码托管平台Gitee绝对是你要迈出的第一步。这不仅仅是安装一个软件那么简单它关乎你后续所有开发工作的流畅度和协作效率。想象一下你写了一个很棒的功能却因为提交代码时遇到各种权限或配置问题而卡住那种感觉就像开车上路才发现没带钥匙。今天我就以一个在Linux环境下摸爬滚打多年的开发者视角带你从零开始在Ubuntu上把Git和Gitee安排得明明白白。整个过程不仅会告诉你每一步怎么做更会解释清楚背后的逻辑让你知其然更知其所以然避免以后踩坑。无论你是前端、后端还是运维这套流程都是通用的基础。2. 核心思路与工具选型解析在开始动手之前我们先理清整个流程的核心思路。我们的目标是在Ubuntu系统上建立一个安全、高效的本地Git环境并使其能够与远程的Gitee仓库进行无缝的代码推送和拉取。这涉及到几个关键环节Git客户端的安装、全局用户信息的配置、SSH密钥对的生成与部署以及最后与Gitee仓库的联动测试。为什么选择SSH而不是HTTPS这是第一个要弄明白的关键选择。连接远程仓库主要有两种方式HTTPS和SSH。HTTPS方式需要你每次推送push或拉取pull时输入Gitee的账号密码虽然方便但安全性较低且频繁操作很麻烦。而SSH方式通过非对称加密技术在你本地生成一对密钥公钥和私钥将公钥上传到Gitee。之后的所有通信都会通过这对密钥进行加密验证无需每次输入密码既安全又便捷。对于需要频繁进行版本控制操作的开发者来说SSH是毫无疑问的首选。因此我们整个流程将围绕SSH连接来展开。至于Git的安装在Ubuntu上我们主要会使用系统自带的APT包管理器。它稳定、可靠能自动处理依赖关系。虽然你也可以从源码编译安装以获取最新版本但对于绝大多数开发场景APT提供的稳定版已经完全够用且省心省力。3. 系统环境准备与Git安装详解3.1 更新系统软件源列表在安装任何新软件之前更新本地的软件包索引是一个好习惯。这个索引相当于一个软件商店的“商品目录”APT工具通过它来知道从哪里下载软件以及有哪些可用的版本。如果这个目录过期了你可能安装不到最新的稳定版软件或者遇到依赖问题。打开你的终端Terminal输入以下命令sudo apt update这条命令会从Ubuntu配置的软件源服务器比如官方的或国内的镜像源获取最新的软件包列表信息。sudo表示以管理员权限运行因为更新系统级索引需要相应权限。执行后你会看到终端开始从各个源地址获取信息。这个过程通常很快。注意如果你的网络连接的是海外源速度可能会比较慢。可以考虑将软件源更换为国内的镜像源例如阿里云、腾讯云或清华大学的镜像这能极大提升后续所有软件下载和更新的速度。更换源的方法不在本文赘述但非常推荐新手配置。3.2 安装Git客户端更新完索引后就可以安装Git了。命令非常简单sudo apt install git执行这个命令后APT包管理器会做以下几件事分析git软件包及其所有依赖项比如一些必要的库文件。从软件源服务器下载这些包。在系统上进行安装和配置。安装过程是自动的中间可能会提示你确认安装及所需磁盘空间输入y并按回车即可。安装完成后可以通过以下命令验证Git是否安装成功并查看安装的版本git --version如果终端显示类似git version 2.34.1的信息那么恭喜你Git已经成功安装到你的Ubuntu系统上了。3.3 配置全局用户身份信息安装好Git后第一件必须做的事就是配置你的用户名称和邮箱地址。这是因为Git是一个分布式版本控制系统每一次代码提交commit都会记录这两条信息用来标识提交者的身份。这个信息会随着你的提交历史被永久记录并同步到所有协作者的仓库中。配置命令如下请将YourName和your-emailgitee.com替换成你自己的信息git config --global user.name “YourName” git config --global user.email “your-emailgitee.com”这里有几个关键点需要解释--global参数表示这是全局配置对当前用户的所有Git仓库生效。如果你只想对某个特定仓库设置不同的作者信息可以在该仓库目录下使用不带--global参数的相同命令进行局部覆盖。邮箱地址的重要性强烈建议你使用注册Gitee账号时所用的邮箱。因为Gitee、GitHub等平台会将提交记录中的邮箱地址与平台账号关联起来这样你的提交头像和主页链接才会正确显示在仓库的贡献者列表中。如果你用了一个未在Gitee绑定的邮箱提交记录就会显示为一个匿名头像。你可以通过以下命令检查刚才的配置是否生效git config --global --list这条命令会列出所有全局配置项你应该能看到刚才设置的user.name和user.email。4. 生成与配置SSH密钥安全连接的基石这是连接Gitee最核心的一步我们通过创建SSH密钥对来建立本地机器和Gitee服务器之间的互信关系。4.1 生成SSH密钥对在终端中执行以下命令来生成密钥ssh-keygen -t rsa -C “your-emailgitee.com”让我们拆解一下这个命令ssh-keygen用于生成、管理和转换SSH密钥的工具。-t rsa指定密钥类型为RSA。这是目前最通用、兼容性最好的算法。你也可以使用-t ed25519更安全更快但某些旧系统可能不支持。-C “your-emailgitee.com”为密钥添加一个注释通常用邮箱。这个注释会保存在公钥文件的末尾方便你日后识别这个密钥是用于哪个账号或服务的。执行命令后你会看到一系列交互提示Enter file in which to save the key (/home/your_username/.ssh/id_rsa):这是询问你密钥文件的保存路径和文件名。直接按回车使用默认路径和文件名id_rsa和id_rsa.pub即可。这样后续其他工具如Git、SSH客户端会自动识别省去额外配置的麻烦。Enter passphrase (empty for no passphrase):询问你是否为私钥设置一个“通行短语”。我强烈建议你设置一个。这相当于为你的私钥再加一把锁。即使私钥文件不慎泄露没有通行短语也无法使用。输入一个你能记住但别人难以猜到的短语然后回车。输入时屏幕上不会有任何显示星号也没有这是正常的安全设计。Enter same passphrase again:再次输入刚才的通行短语以确认。完成后终端会显示密钥的指纹fingerprint和随机艺术图像randomart image。密钥对已经生成在你用户主目录下的.ssh隐藏文件夹中~/.ssh/id_rsa这是你的私钥。必须像保护密码一样保护它绝对不要发送给任何人或上传到任何公开位置。~/.ssh/id_rsa.pub这是你的公钥。它的内容就是我们要复制到Gitee上的东西。公钥可以公开它用于加密信息只有对应的私钥才能解密。4.2 将公钥添加到Gitee账户现在我们需要把公钥“告诉”Gitee。查看并复制公钥在终端输入以下命令将公钥内容显示出来并复制。cat ~/.ssh/id_rsa.pub终端会输出一串以ssh-rsa AAAAB3NzaC1yc2E...开头以你的邮箱注释结尾的长字符串。用鼠标选中全部内容包括开头的ssh-rsa和结尾的邮箱然后复制。登录Gitee并添加公钥用浏览器打开 Gitee官网 并登录。点击右上角头像进入「个人设置」。在左侧菜单栏找到「SSH公钥」。在“添加公钥”页面你会看到“标题”和“公钥”两个输入框。标题起一个容易识别的名字比如“My Ubuntu Laptop”或“Work Desktop”方便你以后管理多台设备的密钥。公钥将刚才复制的整个公钥字符串粘贴到这里。点击「确定」添加。实操心得粘贴公钥时务必确保格式完全正确没有多余的空格或换行。一个常见的错误是复制时漏掉了开头或结尾的字符。最稳妥的方法是使用cat命令输出后直接从终端窗口复制避免通过文本编辑器中转。4.3 测试SSH连接是否成功添加公钥后回到Ubuntu终端输入以下命令来测试连接ssh -T gitgitee.com这是你第一次尝试通过SSH连接Gitee服务器。你会看到类似如下的提示The authenticity of host ‘gitee.com (IP_ADDRESS)’ can’t be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQpKkGYoFgbVr17bmjey0Wc. Are you sure you want to continue connecting (yes/no/[fingerprint])?这是SSH的安全特性在发挥作用它发现你正在连接一个陌生的主机Gitee服务器并展示了该主机的指纹。你需要确认这个指纹是否可信。对于Gitee这样的知名公共服务我们可以信任它。输入yes然后回车。如果一切配置正确接下来你会看到一条欢迎信息Hi USERNAME! You’ve successfully authenticated, but GITEE.COM does not provide shell access.看到successfully authenticated就说明SSH密钥认证成功了后半句提示Gitee不提供shell访问是正常的因为我们本来就不是要去操作它的服务器只是用它来传输Git数据。5. 本地Git与远程Gitee仓库的实战联动基础配置全部完成后我们来进入实战环节看看如何将一个本地项目与Gitee上的远程仓库关联起来并进行基本的代码推送和拉取操作。5.1 场景一将本地已有项目推送到Gitee假设你已经在本地有一个项目文件夹my_project里面有一些代码文件现在想把它放到Gitee上管理。在Gitee上创建新的空仓库登录Gitee点击右上角「」号选择「新建仓库」。填写仓库名称如my_project选择公开或私有初始化仓库的选项全部留空不勾选“使用Readme初始化”等。因为我们是要将本地已有的代码推上去而不是从零开始。点击创建。初始化本地仓库并关联远程在终端中进入你的项目目录cd /path/to/your/my_project初始化本地Git仓库git init这个命令会在当前目录创建一个隐藏的.git文件夹这是Git用来跟踪管理版本历史的所有元数据所在。将当前目录下的所有文件添加到Git的暂存区Staging Areagit add .这里的.表示当前目录所有文件。你也可以指定具体文件名。提交Commit到本地仓库并附上提交信息git commit -m “initial commit”-m后面跟的是本次提交的说明务必清晰简洁例如“修复登录bug”、“添加用户管理模块”。关联远程仓库。在Gitee你刚创建的仓库页面上找到“SSH”地址格式如gitgitee.com:your_username/my_project.git复制它。然后在终端执行git remote add origin gitgitee.com:your_username/my_project.git这里的origin是一个别名代表你刚刚添加的远程仓库地址。你可以用其他名字但origin是约定俗成的默认主远程仓库名。最后将本地代码推送到远程仓库git push -u origin masterpush推送命令。-u这是--set-upstream的简写。它表示将本地的master分支与远程的origin/master分支建立追踪关系。这个参数在第一次推送时非常重要设置之后以后在这个分支上只需要输入git push或git pull即可Git会自动知道要推送到或从哪个远程分支同步。origin master推送到名为origin的远程仓库的master分支。执行完push后刷新你的Gitee仓库页面就能看到代码已经全部上去了。5.2 场景二从Gitee克隆现有项目到本地更多的时候你是要参与一个已经存在于Gitee上的项目。这时你需要将它“克隆”Clone到本地。获取仓库的SSH地址在Gitee上找到你要参与的项目点击页面上绿色的「克隆/下载」按钮选择“SSH”复制地址格式同上。执行克隆命令在终端中切换到你希望存放项目的目录然后执行git clone gitgitee.com:some_username/some_project.git这个命令会做几件事在当前目录下创建一个与仓库同名的文件夹这里是some_project下载整个仓库的所有历史记录和文件到这个文件夹并自动为你配置好远程仓库地址别名为origin。进入项目目录cd some_project现在你就可以在这个本地副本上开始工作了。修改文件后使用git add,git commit,git push的流程来提交你的更改。5.3 日常开发工作流与常用命令解析在团队协作中一个规范的工作流能避免很多混乱。下面是一个简化的Git Flow并解释关键命令开始新功能前同步最新代码git pull origin master这相当于git fetch获取远程更新 git merge合并到当前分支的组合。确保你的本地master分支是基于最新的远程代码。创建并切换到一个新分支进行开发git checkout -b feature/awesome-new-feature-b表示创建并切换。分支名最好具有描述性如feature/xxx,bugfix/xxx。在新分支上开发并频繁提交git add . # 或指定文件 git commit -m “add user login validation”小步提交清晰的提交信息是良好的习惯。开发完成准备合并回主分支首先切换回master分支并拉取可能的新更新git checkout master git pull origin master然后将你的功能分支合并进来git merge feature/awesome-new-feature解决可能出现的合并冲突如果有的话。Git会标记出冲突的文件你需要手动编辑这些文件保留你想要的内容然后git add这些文件表示冲突已解决。最后将合并后的master推送到远程git push origin master删除已合并的本地功能分支可选保持整洁git branch -d feature/awesome-new-feature6. 高频问题排查与实用技巧实录即使按照步骤操作在实际中也可能遇到一些问题。这里记录了一些常见坑点和解决方法。6.1 SSH连接失败问题排查如果你在ssh -T gitgitee.com时遇到Permission denied (publickey)错误说明SSH认证失败了。请按以下顺序排查检查公钥是否已正确添加再次登录Gitee的SSH公钥设置页面确认公钥内容完整无误地粘贴在那里没有多余空格或换行。确保SSH-Agent正在运行并加载了密钥启动SSH-Agenteval “$(ssh-agent -s)”将你的私钥添加到代理ssh-add ~/.ssh/id_rsa如果设置了通行短语此时会提示你输入。检查文件权限SSH对密钥文件的权限非常严格。确保~/.ssh目录权限为700chmod 700 ~/.ssh确保私钥id_rsa权限为600chmod 600 ~/.ssh/id_rsa确保公钥id_rsa.pub权限为644chmod 644 ~/.ssh/id_rsa.pub错误的权限会导致SSH出于安全考虑直接拒绝使用该密钥。使用详细模式调试运行ssh -T -v gitgitee.com。-v参数会输出详细的连接过程日志你可以看到客户端尝试了哪些密钥、连接到了哪个服务器等这对于定位问题非常有帮助。6.2 Git操作中的常见错误与解决错误fatal: remote origin already exists.原因当你试图git remote add origin ...时本地仓库已经配置过一个叫origin的远程地址了。解决查看现有远程仓库git remote -v如果想更换地址可以先删除旧的git remote remove origin然后再重新添加。或者使用另一个名字git remote add gitee ...。错误error: failed to push some refs to ‘...’原因通常是因为远程仓库有你本地没有的新提交比如同事已经推了代码。Git禁止这种可能导致历史覆盖的推送。解决先执行git pull origin master将远程的更新拉取到本地并合并可能会产生合并冲突需要解决然后再执行git push origin master。操作失误提交了错误的文件或写了错误的提交信息只想修改上一次的提交信息git commit --amend。这会打开编辑器让你修改信息。不小心把不该提交的文件add了git reset HEAD file可以将指定文件从暂存区撤出但保留工作区的修改。如果想彻底丢弃工作区的修改用git checkout -- file危险操作谨慎使用。6.3 提升效率的配置与别名设置Git允许你自定义配置来提升效率。编辑~/.gitconfig文件或通过命令git config --global -e可以添加以下实用配置[alias] co checkout br branch ci commit st status last log -1 HEAD # 查看最后一次提交 lg log --oneline --graph --all --decorate # 一个非常漂亮的单行图形化日志 [core] editor vim # 设置你喜欢的文本编辑器如 nano, code [pull] rebase false # 设置 pull 时默认使用 merge 而非 rebase新手更友好设置别名后你就可以用git st代替git status用git co master代替git checkout master大大节省输入时间。最后关于分支管理对于刚接触Git协作的团队我建议从简单的“功能分支工作流”开始即所有新功能都在独立分支开发完成后合并回主分支。等团队熟悉后再考虑引入更复杂的Git Flow。保持流程简单清晰往往比追求复杂的模型更能提高效率。