【超详细】别再看零散的教程了!一篇搞定Gitee从注册、配置到代码上传与管理(内含避坑指南最佳实践)


 🔥个人主页:艾莉丝努力练剑

❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题、洛谷刷题、C/C++基础知识知识强化补充、C/C++干货分享&学习过程记录

🍉学习方向:C/C++方向学习者

⭐️人生格言:为天地立心,为生民立命,为往圣继绝学,为万世开太平

前言:作为一名开发者,无论是初学者还是资深大佬,代码版本管理和协作都是我们的核心技能。GitHub虽好,但在国内访问时而抽风,这时候一个稳定、高速的国内平台就显得至关重要——Gitee(码云) 正是我们的不二之选。

本文将从零开始,手把手带你完成Gitee的全程使用,内容涵盖注册、安装配置Git、SSH密钥对接、创建仓库、代码上传、日常管理以及高级技巧。不止步于“怎么做”,更深入讲解“为什么这么做”,帮你彻底摆脱依赖图形化工具却不懂原理的困境,真正掌握Git核心思想。全文超6000字,建议收藏后慢慢实践。



目录

第一章:缘起——为什么是Gitee?

1.1  访问速度极快

1.2  全中文环境

1.3  符合本地需求

1.4  生态整合

第二章:万丈高楼平地起——Gitee账号注册与准备

第1步:注册Gitee账号

第2步:安装Git

 Windows用户:

macOS用户:

Linux用户 (如Ubuntu/Debian):

第3步:全局配置Git用户信息

第三章:建立安全通道——配置SSH公钥

第1步:生成SSH密钥对

第2步:将公钥添加到Gitee

第四章:第一个仓库——代码上传全流程

场景A:本地已有项目,想推送到Gitee

第1步:在Gitee上创建远程仓库

第2步:初始化本地仓库并提交代码

第3步:关联远程仓库并推送

场景B:从Gitee克隆(Clone)已有项目

第五章:日拱一卒——日常开发工作流

5.1  标准流程:add -> commit -> push

5.2  重要概念:拉取更新(Pull)!

第六章:锦上添花——高级技巧与最佳实践

6.1  .gitignore 文件

6.2  分支(Branch)管理

6.3  使用Gitee的 Pull Request (PR)

第七章:常见问题与避坑指南(Q&A)

7.1  Q: git push 提示 Permission denied (publickey)?

7.2  Q: git push 提示 error: failed to push some refs to...?

7.3  Q: 提交时写错了提交信息怎么办?

7.4  Q: 误把不该提交的文件(如密码配置文件)add 了怎么办?

总结与展望

结尾


第一章:缘起——为什么是Gitee?

在正式开始介绍之前,我们先简单了解一下为什么推荐Gitee。

1.1  访问速度极快

服务器位于国内,无论是克隆、推送还是拉取代码,速度都比GitHub快数个量级,尤其是在下载大型仓库或依赖时,体验提升巨大。

1.2  全中文环境

界面、文档、帮助中心均为中文,对国内用户非常友好,降低了学习和使用门槛。

1.3  符合本地需求

集成了代码片段、Wiki、Issue、Pull Request(Gitee中称为“Pull Request”或“合并请求”)、Pages(Gitee Pages)等功能,同时支持企业版的私有化部署,更贴合国内企业和团队的工作流程。

1.4  生态整合

与国内的CI/CD(如Jenkins)、项目管理工具等有较好的集成。

对于个人学习者、初创团队以及国内企业项目,Gitee提供了一个非常稳定和高效的协作环境。


第二章:万丈高楼平地起——Gitee账号注册与准备

第1步:注册Gitee账号

  1. 打开Gitee官网:Gitee

  2. 点击页面右上角的 【注册】 按钮。

  3. 你可以通过 手机号 或 邮箱 进行注册。按提示填写信息即可。建议使用常用邮箱,方便接收重要通知。

  4. 注册完成后,别忘记去邮箱激活账号。激活后,你的Gitee之旅就正式开始了。

第2步:安装Git

Gitee是一个Git服务器,我们要在本地操作,必须安装Git客户端。

 Windows用户

1、访问 Git 官方下载页:https://git-scm.com/download/win

2、下载并运行安装程序。安装过程中,一路 “Next” 即可,但有几个关键点需要注意:

(1)选择组件: 勾选 Git Bash Here 和 Git GUI Here,非常实用。

(2)选择默认编辑器: 强烈推荐选择 Use Visual Studio Code as Git's default editor(如果你安装了VSCode),或者选择你熟悉的编辑器(如Nano、Vim)。

(3)调整Path环境: 选择 Git from the command line and also from 3rd-party software。这将允许你在任何命令行(如CMD、PowerShell)中使用Git。

(4)选择SSH客户端: 使用默认的 OpenSSH

(5)配置行结束符转换: 选择 Checkout Windows-style, commit Unix-style line endings。这是为了Windows和Unix/Linux系统协作时的兼容性。

(6)终端模拟器: 选择默认的 Use MinTTY

(7)其他选项默认即可。

macOS用户

(1)最简单的方法:安装Xcode Command Line Tools。在终端(Terminal)中运行 xcode-select --install

(2)或者使用Homebrew:brew install git。

Linux用户 (如Ubuntu/Debian)

在终端中运行:sudo apt-get update && sudo apt-get install git安装验证

安装完成后,打开你的终端(Windows可用Git Bash或CMD/PowerShell),输入:

git --version

如果正确显示版本号(如 git version 2.37.1.windows.1),说明安装成功。

第3步:全局配置Git用户信息

这是非常重要的一步!你提交的每一次代码都会带有这个身份信息,它用于标识提交者。

在终端中执行以下两条命令,将示例邮箱和用户名替换成你注册Gitee时使用的信息

git config --global user.name "Your-Gitee-Username"
git config --global user.email "your-email@gitee.com"

说明

(1)——global表示这是全局配置,对你这台电脑上所有的Git仓库生效。如果某个项目想用不同的信息,可以在项目目录下不加 --global 再配置一次;

(2)user.name 建议和Gitee用户名保持一致,避免混淆;

(3)user.email 必须是你在Gitee上注册时使用的邮箱,否则你的提交贡献将无法在Gitee上正确统计。检查配置是否成。

git config --global --list

第三章:建立安全通道——配置SSH公钥

为了避免每次推送代码都输入账号密码,我们需要配置SSH密钥,实现免密安全登录。这是最佳实践,务必掌握。

第1步:生成SSH密钥对

 1、打开终端(Git Bash)。

 2、运行以下命令,将 your-email@example.com 替换为你的Gitee邮箱:

ssh-keygen -t ed25519 -C "your-email@example.com"

 注:如果你的系统不支持 ed25519 算法,可以使用旧的RSA算法:ssh-keygen -t rsa -b 4096 -C "your-email@example.com"。

 3、接下来会提示你“Enter file in which to save the key”,直接按回车,使用默认的保存路径(~/.ssh/id_ed25519 或 ~/.ssh/id_rsa)。

 4、会提示你输入一个密码(passphrase),可以直接回车留空(方便使用),当然为了安全起见,设置一个密码更好。之后推送时可能需要输入这个密码。

第2步:将公钥添加到Gitee

 1、根据你上一步选择的算法,在终端中用以下命令打印出公钥内容

(1)如果是 ed25519cat ~/.ssh/id_ed25519.pub

(2)如果是 rsacat ~/.ssh/id_rsa.pub。

 2、终端会显示一长串以 ssh-ed25519 或 ssh-rsa 开头,以你的邮箱结尾的文本。完整地复制它。

 3、登录Gitee,点击右上角头像 -> 【设置】

 4、进入左侧菜单的 【SSH公钥】

 5、在“添加公钥”页面:

(1)标题: 给你的公钥起个名字,比如 My Work Laptop

(2)公钥粘贴你刚才复制的完整公钥内容。

 6、点击 【确定】,可能需要验证一下密码。

第3步:验证是否配置成功

在终端输入:

ssh -T git@gitee.com

第一次连接时,会提示你是否信任主机,输入 yes 回车。
如果配置成功,你会看到一条如下的欢迎信息

Hi USERNAME! You've successfully authenticated, but Gitee.com does not provide shell access.

这表明你的SSH通道已经成功建立!


第四章:第一个仓库——代码上传全流程

现在我们开始实战,将本地代码推送到Gitee。

场景A:本地已有项目,想推送到Gitee

第1步:在Gitee上创建远程仓库

 1、登录Gitee,点击右上角 + 号,选择 【新建仓库】

 2、填写仓库信息:

(1)仓库名称:必填,如 my-awesome-project

(2)路径:会自动生成,通常和仓库名一致,这是你仓库的URL的一部分。

(3)介绍:可选,简单描述你的项目。

(4)公开/私有:选择仓库的可见性。私有仓库只有你授权的人才能看到。

(5)初始化仓库不要勾选 使用Readme文件初始化这个仓库。因为我们本地已有项目,如果勾选,会导致后续推送冲突,需要先拉取合并,对新手不友好。我们从一个空的仓库开始。

(6)选择.gitignore 和 许可证:可以根据你的项目类型选择,也可以后续手动添加。

 3、点击 【创建】

第2步:初始化本地仓库并提交代码

 1、打开终端,进入到你的本地项目根目录

 2、执行以下命令,初始化一个本地Git仓:

git init

这会在当前目录创建一个 .git 的隐藏文件夹。

3、将当前目录下的所有文件(除了在 .gitignore 中声明的)添加到暂存区(Stage)

git add .

git add . 中的 . 代表当前目录。你也可以用 git add filename 添加特定文件。

4、将暂存区的文件提交(Commit) 到本地仓库,并附上提交信息:

git commit -m "first commit: init project"

-m 后面的字符串是本次提交的说明,必须填写,且应清晰有意义。

第3步:关联远程仓库并推送

 1、将你在Gitee上创建的空仓库的地址关联到本地仓库。

(1)在Gitee你的空仓库页面,点击 【克隆/下载】 按钮,选择 SSH,复制地址(如 git@gitee.com:your-username/your-repo-name.git)。

 2、在终端中,为本地仓库添加一个名为 origin 的远程地址(这是惯例,代表主仓库:

git remote add origin git@gitee.com:your-username/your-repo-name.git

使用 git remote -v 可以查看是否添加成功。

 3、首次推送,使用 -u 参数将本地的 master 分支(现在主流更推荐 main,但Git默认初始化可能是 master)推送到远程的 origin 仓库,并建立关联:

git push -u origin master
# 或者,如果你的默认分支是 main
# git push -u origin main

-u (或 --set-upstream) 选项会记住这次推送的分支和目标,下次在这个分支只需要输入 git push 即可。

恭喜! 刷新你的Gitee仓库页面,代码已经全部安静地躺在那里了。

场景B:从Gitee克隆(Clone)已有项目

如果你要参与别人的项目,或者在公司电脑上继续开发家里电脑上传的项目,你需要克隆

 1、在Gitee上找到你要克隆的项目仓库页面。

 2、点击 【克隆/下载】,复制SSH地址(如 git@gitee.com:username/repo.git)。

 3、在终端中,切换到你想存放项目的目录,运行:

git clone git@gitee.com:username/repo.git

4、Git会自动为你完成以下操作:

(1)在当前目录下创建一个以仓库名命名的文件夹。

(2)初始化本地仓库。

(3)关联远程仓库,默认名称就是 origin

(4)拉取(Pull)远程 origin 的所有数据(默认分支)。

5、进入项目目录 (cd repo),你就可以开始开发了。


第五章:日拱一卒——日常开发工作流

你不会只提交一次代码。日常开发是不断循环以下步骤:

5.1  标准流程:add -> commit -> push

1、修改代码:完成一个小功能或修复一个bug。

2、查看状态:使用 git status 查看哪些文件被修改、哪些已暂存。

3、添加到暂存区git add . 或 git add specific_file.js

4、提交到本地仓库git commit -m "feat: add user login function"提交信息要规范,推荐使用 约定式提交 规范,如 fix:feat:docs: 等开头。

5、推送到远程git push。因为第一次推送时用了 -u,所以这里直接 git push 就行。

5.2  重要概念:拉取更新(Pull)!

在团队协作中,远程仓库可能已经被队友更新了。所以在你的 git push 之前,务必先拉取一下远程的最新更改,并合并到本地,避免冲突。

git pull origin master
# 等同于 git fetch + git merge
# 如果默认分支是main,则替换为main

如果 git pull 后存在冲突,Git会提示你,你需要手动解决冲突文件中的差异(文件中的 <<<<<<<=======>>>>>>> 标记),然后再次 addcommitpush


第六章:锦上添花——高级技巧与最佳实践

6.1  .gitignore 文件

这个文件告诉Git哪些文件或目录不需要纳入版本控制。比如IDE配置文件(.idea/.vscode/)、依赖文件夹(node_modules/)、日志文件、编译产物等。

最佳实践:项目一开始就创建它。你可以在 gitignore.io - Create Useful .gitignore Files For Your Project 生成对应语言或工具的 .gitignore 模板。

6.2  分支(Branch)管理

在主分支(master/main)上直接开发是危险的。应该为每个新功能或bug修复创建一个新分支。

# 创建并切换到新功能分支
git checkout -b feature/awesome-new-feature# 在新分支上开发、提交...
git add .
git commit -m "feat: implement awesome feature A"# 开发完成后,切换回主分支
git checkout main# 确保主分支是最新的
git pull origin main# 将功能分支合并到主分支
git merge feature/awesome-new-feature# 删除已合并的本地功能分支
git branch -d feature/awesome-new-feature# 推送更新后的主分支
git push origin main

6.3  使用Gitee的 Pull Request (PR)

如果你在** Fork **的仓库上开发(参与开源项目),或者公司的代码审查流程要求,你不会直接合并到主分支,而是发起一个 Pull Request(合并请求)

1、将你的功能分支推送到你的远程仓库:git push origin feature/xxx

2、在Gitee仓库页面,通常会自动弹出创建PR的提示,或者你手动点击 【Pull Requests】 -> 【新建 Pull Request】

3、选择你的功能分支作为源分支,目标分支为主分支。

4、填写标题和描述,请求代码审查。

5、审查通过后,由项目管理员合并你的PR。


第七章:常见问题与避坑指南(Q&A)

7.1  Q: git push 提示 Permission denied (publickey)

A:SSH密钥配置失败。请重新检查第三章的所有步骤:密钥是否生成、公钥是否完整复制到Gitee、是否验证成功。

7.2  Q: git push 提示 error: failed to push some refs to...

A:通常是因为远程仓库有你本地没有的更新(比如你在网页上创建了README文件)。先执行 git pull origin master --rebase,拉取远程更新并变基,解决可能的冲突后,再 git push

7.3  Q: 提交时写错了提交信息怎么办?

A:如果还没推送到远程,使用 git commit --amend 命令可以修改上一次的提交信息。

7.4  Q: 误把不该提交的文件(如密码配置文件)add 了怎么办?

A:如果还没commit,用 git reset HEAD <file> 将其从暂存区撤出。如果已经commit了,需要使用 git filter-branch 或 BFG Repo-Cleaner 等工具从历史中彻底删除,这操作很危险,建议查专门教程。


总结与展望

至此,你已经系统地掌握了Gitee的核心使用流程:

1、环境准备:注册 + 安装Git + 配置用户信息。

2、安全通道:生成并配置SSH密钥,实现免密操作。

3、核心操作

(1)git initgit addgit commitgit push (本地到远程);

(2)git clonegit pull (远程到本地)

4、进阶知识.gitignore、分支、Pull Request。

理论看千遍,不如动手做一遍。现在就找一个你的本地项目,按照指南,完整地走一遍流程吧!

Gitee和Git的功能远不止于此,诸如标签(Tag)、贮藏(Stash)、重置(Reset)、回退(Revert)等高级操作,以及基于Git的CI/CD自动化,都是你未来可以探索的方向。掌握了本文的基础,你将有足够的能力去征服它们!


结尾

往期回顾:

GitHub完全指南:从零入门到高效代码管理

结语:希望这篇超详细的指南能成为你在CSDN和代码世界中的一块坚实垫脚石。如果觉得有帮助,别忘了给博主点赞、收藏、评论、转发“一键四连”哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96408.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

43.shell脚本循环与函数

shell脚本循环与函数 for 循环 for 循环用于一次性读取多个信息&#xff0c;逐一对信息进行操作处理&#xff0c;特别适合处理有范围的数据 语法 for 变量名 in 取值列表 do命令序列 done批量创建用户 #!/bin/bashtouch /root/users.txt echo aka blues cloe dio foks > /ro…

模型部署:(四)安卓端部署Yolov8-v8.2.99实例分割项目全流程记录

模型部署&#xff1a;&#xff08;四&#xff09;安卓端部署Yolov8-v8.2.99实例分割项目全流程记录1、下载ncnn2、下载opencv-mobile3、文件拷贝4、andorid_studio相关配置5、文件内参数设置5、重构项目&#xff1a;6、打包apk7、部署自己训练的实例分割模型1、下载ncnn 地址&…

高并发、低延迟全球直播系统架构

一、 核心架构图 整个系统的数据流和工作流程如下图所示&#xff0c;它清晰地展示了从主播推流到观众观看的完整过程&#xff1a; #mermaid-svg-QzNpj0DWxd5FERPC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QzN…

AWS strands agents 当智能体作为独立服务/容器部署时,它们无法共享进程内状态

当智能体作为独立服务/容器部署时&#xff0c;它们无法共享进程内状态。 以下是针对分布式部署中动态内存库的生产就绪解决方案&#xff1a;1. 基于外部存储的内存库基于 DynamoDB 的共享内存import boto3 from strands import Agent, tool from typing import Dict, Any impor…

第五节 JavaScript——引用类型、DOM/BOM 与异步编程

JavaScript 的第五节课通常会深入探讨 ​​引用类型、DOM 操作、BOM 操作、事件处理以及异步编程​​ 等核心概念。这些知识能让你创建动态交互丰富的网页。下面我将详细讲解这些内容并提供示例。 🚀 JavaScript 第五节:引用类型、DOM/BOM 与异步编程 ⚡ 一、引用类型 引…

使用Pycharm进行远程ssh(以Featurize为例)

使用Pycharm进行远程ssh&#xff08;以Featurize为例&#xff09;文章目录介绍应用背景远程连接Python连接Jupyter介绍应用背景 在使用Pycharm 专业版的时候进行远程ssh连接服务器&#xff08;Featurize&#xff09;的Python解释器和Jupyter 远程连接Python 打开Pycharm点击…

深入研究:ClickHouse中arrayExists与hasAny在ORDER BY场景下的性能差异

最近公司大数据情况下ClickHouse查询性能极差&#xff0c;后来发现在大数据量ORDER BY场景下&#xff0c;arrayExists(x -> x in ...)比hasAny性能快10倍&#xff01;&#xff01;&#xff01;&#xff01; 一、问题重述与研究背景 在大数据量 ORDER BY场景下&#xff0c;…

Spring AI (二)结合Mysql做聊天信息存储

上文讲了&#xff0c;用Spring ai做简单的聊天功能&#xff0c;没看过的可以查看下 Spring AI结合豆包模型 这里简单结合下Jdbc做下聊天记录的存储和查询&#xff0c;让对话变的更智能。 首先是Pom的支持 <dependency><groupId>org.springframework.ai</grou…

【docker】data-root 数据迁移(防止无法加载镜像和容器问题)

操作系统&#xff1a;ubuntu 24.04 docker版本&#xff1a;docker-ce 28.1.1 目标&#xff1a;将/var/lib/docker 的数据迁移到/data/docker停止docker sudo systemctl stop docker.socket sudo systemctl stop docker这个步骤一定要做&#xff0c;否则容易导致数据不一致。 rs…

二、网页的“化妆师”:从零学习 CSS

一、CSS 是什么 1.1 CSS 的定义 CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式表&#xff09; 是一种用来给 HTML 页面 添加样式的语言。 简单来说&#xff1a; HTML 负责结构 —— 决定网页上有什么内容。 CSS 负责样式 —— 决定这些内容“长什么样”。 如果…

传统项目管理与敏捷的核心差异

在项目管理领域&#xff0c;传统方法与敏捷方法代表了两种不同的管理思维与实践路径。传统项目管理强调计划性、规范性和阶段性推进&#xff0c;而敏捷则注重灵活性、快速迭代和价值交付。 正如彼得德鲁克所说&#xff1a;“没有完美的计划&#xff0c;只有不断调整的行动。”理…

axios+ts封装

http.ts import axios from axios import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from axios import qs from qs/*** 扩展AxiosRequestConfig&#xff0c;增加一些自定义的属性* isAuth: 自定义的参数中&#xff0c;用来判断是否携带token 因为AxiosReq…

2026新选题:基于K-Means实现学生求职意向聚类推荐职位

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

SpringCloud gateway配置predicates的匹配规则

需求 通过gateway的route规则&#xff0c;实现分组流量配置 资源 一个nacos&#xff0c;一个gateway &#xff0c;一个服务app&#xff08;部署双实例group-1&#xff0c;group-2&#xff09;&#xff0c;实现特定条件下往分组一和分组二流量切换。 方案 1 配置文件 nacos…

android14 硬键盘ESC改BACK按键返回无效问题

在之前的android版本中修改外接键盘ESC为BACK按键做返回键使用&#xff0c;直接修改如下代码即可&#xff1a;--- a/frameworks/base/data/keyboards/Generic.kcmb/frameworks/base/data/keyboards/Generic.kcm-499,7 499,7 key PLUS {### Non-printing keys ###key ESCAPE { …

【开题答辩全过程】以 asp高校外卖订单系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

UVa1063/LA3807 The Rotation Game

UVa1063/LA3807 The Rotation Game题目链接题意输入格式输出格式分析AC 代码IDA*分3次BFS题目链接 本题是2004年icpc亚洲区域赛上海赛区的H题 题意 如下图所示形状的棋盘上分别有8个1、2、3&#xff0c;要往A&#xff5e;H方向旋转棋盘&#xff0c;使中间8个方格数字相同。图&…

用pywin32连接autocad 写一个利用遗传算法从选择的闭合图形内进行最优利用率的排版 ai草稿

好的&#xff0c;我们来深入细说遗传算法&#xff08;Genetic Algorithm, GA&#xff09;在钣金自动排版中的应用。遗传算法 (GA) 在钣金排版中的详细解析遗传算法是一种受达尔文生物进化论启发的元启发式优化算法。它不追求一次性找到数学上的绝对最优解&#xff0c;而是通过模…

Go语言io.Copy深度解析:高效数据复制的终极指南

在日常开发中&#xff0c;我们经常需要在不同的数据源之间复制数据。无论是文件操作、网络传输还是进程通信&#xff0c;数据复制都是不可或缺的基础操作。Go语言的标准库提供了一个强大而高效的工具来简化这一过程&#xff1a;io.Copy。 什么是io.Copy&#xff1f; io.Copy是G…

【Vue3】07-利用setup编写vue(2)-setup的语法糖

其它篇章&#xff1a; 1.【Vue3】01-创建Vue3工程 2.【Vue3】02-Vue3工程目录分析 3.【Vue3】03-编写app组件——src 4.【Vue3】04-编写vue实现一个简单效果 5.【Vue3】05-Options API和Composition API的区别 6.【Vue3】06-利用setup编写vue&#xff08;1&#xff09; 7.【Vue…