ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/8/15 1:38:42 拓冰建站 浏览量
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包管理器会做以下几件事:

  1. 分析git软件包及其所有依赖项(比如一些必要的库文件)。
  2. 从软件源服务器下载这些包。
  3. 在系统上进行安装和配置。

安装过程是自动的,中间可能会提示你确认安装及所需磁盘空间,输入y并按回车即可。安装完成后,可以通过以下命令验证Git是否安装成功,并查看安装的版本:

git --version

如果终端显示类似git version 2.34.1的信息,那么恭喜你,Git已经成功安装到你的Ubuntu系统上了。

3.3 配置全局用户身份信息

安装好Git后,第一件必须做的事就是配置你的用户名称和邮箱地址。这是因为Git是一个分布式版本控制系统,每一次代码提交(commit)都会记录这两条信息,用来标识提交者的身份。这个信息会随着你的提交历史被永久记录,并同步到所有协作者的仓库中。

配置命令如下(请将YourNameyour-email@gitee.com替换成你自己的信息):

git config --global user.name “YourName” git config --global user.email “your-email@gitee.com”

这里有几个关键点需要解释:

  • --global参数:表示这是全局配置,对当前用户的所有Git仓库生效。如果你只想对某个特定仓库设置不同的作者信息,可以在该仓库目录下使用不带--global参数的相同命令进行局部覆盖。
  • 邮箱地址的重要性:强烈建议你使用注册Gitee账号时所用的邮箱。因为Gitee、GitHub等平台会将提交记录中的邮箱地址与平台账号关联起来,这样你的提交头像和主页链接才会正确显示在仓库的贡献者列表中。如果你用了一个未在Gitee绑定的邮箱,提交记录就会显示为一个匿名头像。

你可以通过以下命令检查刚才的配置是否生效:

git config --global --list

这条命令会列出所有全局配置项,你应该能看到刚才设置的user.nameuser.email

4. 生成与配置SSH密钥:安全连接的基石

这是连接Gitee最核心的一步,我们通过创建SSH密钥对来建立本地机器和Gitee服务器之间的互信关系。

4.1 生成SSH密钥对

在终端中执行以下命令来生成密钥:

ssh-keygen -t rsa -C “your-email@gitee.com”

让我们拆解一下这个命令:

  • ssh-keygen:用于生成、管理和转换SSH密钥的工具。
  • -t rsa:指定密钥类型为RSA。这是目前最通用、兼容性最好的算法。你也可以使用-t ed25519(更安全更快),但某些旧系统可能不支持。
  • -C “your-email@gitee.com”:为密钥添加一个注释,通常用邮箱。这个注释会保存在公钥文件的末尾,方便你日后识别这个密钥是用于哪个账号或服务的。

执行命令后,你会看到一系列交互提示:

  1. Enter file in which to save the key (/home/your_username/.ssh/id_rsa):这是询问你密钥文件的保存路径和文件名。直接按回车,使用默认路径和文件名(id_rsaid_rsa.pub)即可。这样后续其他工具(如Git、SSH客户端)会自动识别,省去额外配置的麻烦。
  2. Enter passphrase (empty for no passphrase):询问你是否为私钥设置一个“通行短语”。我强烈建议你设置一个。这相当于为你的私钥再加一把锁。即使私钥文件不慎泄露,没有通行短语也无法使用。输入一个你能记住但别人难以猜到的短语,然后回车。输入时屏幕上不会有任何显示(星号也没有),这是正常的安全设计。
  3. Enter same passphrase again:再次输入刚才的通行短语以确认。

完成后,终端会显示密钥的指纹(fingerprint)和随机艺术图像(randomart image)。密钥对已经生成在你用户主目录下的.ssh隐藏文件夹中:

  • ~/.ssh/id_rsa:这是你的私钥必须像保护密码一样保护它!绝对不要发送给任何人或上传到任何公开位置。
  • ~/.ssh/id_rsa.pub:这是你的公钥。它的内容就是我们要复制到Gitee上的东西。公钥可以公开,它用于加密信息,只有对应的私钥才能解密。

4.2 将公钥添加到Gitee账户

现在,我们需要把公钥“告诉”Gitee。

  1. 查看并复制公钥:在终端输入以下命令,将公钥内容显示出来并复制。

    cat ~/.ssh/id_rsa.pub

    终端会输出一串以ssh-rsa AAAAB3NzaC1yc2E...开头,以你的邮箱注释结尾的长字符串。用鼠标选中全部内容(包括开头的ssh-rsa和结尾的邮箱),然后复制。

  2. 登录Gitee并添加公钥

    • 用浏览器打开 Gitee官网 并登录。
    • 点击右上角头像,进入「个人设置」。
    • 在左侧菜单栏找到「SSH公钥」。
    • 在“添加公钥”页面,你会看到“标题”和“公钥”两个输入框。
      • 标题:起一个容易识别的名字,比如“My Ubuntu Laptop”或“Work Desktop”,方便你以后管理多台设备的密钥。
      • 公钥:将刚才复制的整个公钥字符串粘贴到这里。
    • 点击「确定」添加。

实操心得:粘贴公钥时,务必确保格式完全正确,没有多余的空格或换行。一个常见的错误是复制时漏掉了开头或结尾的字符。最稳妥的方法是使用cat命令输出后,直接从终端窗口复制,避免通过文本编辑器中转。

4.3 测试SSH连接是否成功

添加公钥后,回到Ubuntu终端,输入以下命令来测试连接:

ssh -T git@gitee.com

这是你第一次尝试通过SSH连接Gitee服务器。你会看到类似如下的提示:

The authenticity of host ‘gitee.com (IP_ADDRESS)’ can’t be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc. 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上管理。

  1. 在Gitee上创建新的空仓库

    • 登录Gitee,点击右上角「+」号,选择「新建仓库」。
    • 填写仓库名称(如my_project),选择公开或私有,初始化仓库的选项全部留空(不勾选“使用Readme初始化”等)。因为我们是要将本地已有的代码推上去,而不是从零开始。点击创建。
  2. 初始化本地仓库并关联远程

    • 在终端中,进入你的项目目录:
      cd /path/to/your/my_project
    • 初始化本地Git仓库:
      git init
      这个命令会在当前目录创建一个隐藏的.git文件夹,这是Git用来跟踪管理版本历史的所有元数据所在。
    • 将当前目录下的所有文件添加到Git的暂存区(Staging Area):
      git add .
      这里的.表示当前目录所有文件。你也可以指定具体文件名。
    • 提交(Commit)到本地仓库,并附上提交信息:
      git commit -m “initial commit”
      -m后面跟的是本次提交的说明,务必清晰简洁,例如“修复登录bug”、“添加用户管理模块”。
    • 关联远程仓库。在Gitee你刚创建的仓库页面上,找到“SSH”地址(格式如git@gitee.com:your_username/my_project.git),复制它。然后在终端执行:
      git remote add origin git@gitee.com:your_username/my_project.git
      这里的origin是一个别名,代表你刚刚添加的远程仓库地址。你可以用其他名字,但origin是约定俗成的默认主远程仓库名。
    • 最后,将本地代码推送到远程仓库:
      git push -u origin master
      • push:推送命令。
      • -u:这是--set-upstream的简写。它表示将本地的master分支与远程的origin/master分支建立追踪关系。这个参数在第一次推送时非常重要,设置之后,以后在这个分支上只需要输入git pushgit pull即可,Git会自动知道要推送到或从哪个远程分支同步。
      • origin master:推送到名为origin的远程仓库的master分支。

    执行完push后,刷新你的Gitee仓库页面,就能看到代码已经全部上去了。

5.2 场景二:从Gitee克隆现有项目到本地

更多的时候,你是要参与一个已经存在于Gitee上的项目。这时你需要将它“克隆”(Clone)到本地。

  1. 获取仓库的SSH地址:在Gitee上找到你要参与的项目,点击页面上绿色的「克隆/下载」按钮,选择“SSH”,复制地址(格式同上)。
  2. 执行克隆命令:在终端中,切换到你希望存放项目的目录,然后执行:
    git clone git@gitee.com:some_username/some_project.git
    这个命令会做几件事:在当前目录下创建一个与仓库同名的文件夹(这里是some_project),下载整个仓库的所有历史记录和文件到这个文件夹,并自动为你配置好远程仓库地址(别名为origin)。
  3. 进入项目目录
    cd some_project
    现在,你就可以在这个本地副本上开始工作了。修改文件后,使用git add,git commit,git push的流程来提交你的更改。

5.3 日常开发工作流与常用命令解析

在团队协作中,一个规范的工作流能避免很多混乱。下面是一个简化的Git Flow,并解释关键命令:

  1. 开始新功能前,同步最新代码

    git pull origin master

    这相当于git fetch(获取远程更新) +git merge(合并到当前分支)的组合。确保你的本地master分支是基于最新的远程代码。

  2. 创建并切换到一个新分支进行开发

    git checkout -b feature/awesome-new-feature

    -b表示创建并切换。分支名最好具有描述性,如feature/xxx,bugfix/xxx

  3. 在新分支上开发,并频繁提交

    git add . # 或指定文件 git commit -m “add user login validation”

    小步提交,清晰的提交信息,是良好的习惯。

  4. 开发完成,准备合并回主分支

    • 首先,切换回master分支并拉取可能的新更新:
      git checkout master git pull origin master
    • 然后,将你的功能分支合并进来:
      git merge feature/awesome-new-feature
    • 解决可能出现的合并冲突(如果有的话)。Git会标记出冲突的文件,你需要手动编辑这些文件,保留你想要的内容,然后git add这些文件表示冲突已解决。
    • 最后,将合并后的master推送到远程:
      git push origin master
  5. 删除已合并的本地功能分支(可选,保持整洁):

    git branch -d feature/awesome-new-feature

6. 高频问题排查与实用技巧实录

即使按照步骤操作,在实际中也可能遇到一些问题。这里记录了一些常见坑点和解决方法。

6.1 SSH连接失败问题排查

如果你在ssh -T git@gitee.com时遇到Permission denied (publickey)错误,说明SSH认证失败了。请按以下顺序排查:

  1. 检查公钥是否已正确添加:再次登录Gitee的SSH公钥设置页面,确认公钥内容完整无误地粘贴在那里,没有多余空格或换行。
  2. 确保SSH-Agent正在运行并加载了密钥
    • 启动SSH-Agent:eval “$(ssh-agent -s)”
    • 将你的私钥添加到代理:ssh-add ~/.ssh/id_rsa
    • 如果设置了通行短语,此时会提示你输入。
  3. 检查文件权限:SSH对密钥文件的权限非常严格。
    • 确保~/.ssh目录权限为700chmod 700 ~/.ssh
    • 确保私钥id_rsa权限为600chmod 600 ~/.ssh/id_rsa
    • 确保公钥id_rsa.pub权限为644chmod 644 ~/.ssh/id_rsa.pub错误的权限会导致SSH出于安全考虑直接拒绝使用该密钥。
  4. 使用详细模式调试:运行ssh -T -v git@gitee.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。这会打开编辑器让你修改信息。
    • 不小心把不该提交的文件addgit 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。保持流程简单清晰,往往比追求复杂的模型更能提高效率。