我是李慢慢。
最近的树莓派没少敲代码,因为每天都在更新,更兼有很多精巧小功能的测试代码,自己管理自己的代码就成了大问题,以前分享代码给大家都是用百度网盘,实在是太不“程序员”了,直到最近了解到还有Gitee也即码云这个东西,才感觉得救了。此处转载一篇来自CSDN的文章,算是我的启蒙文了,非常感谢原作者【苜苜的烂笔头】,原文链接见文末。

以下原文(略有改动)。
学习时,经常需要管理自己的代码,使用到码云gitee这个代码托管平台,所以在这里操作演示,做个笔迹详细记录一下。以下介绍 gitee 的使用操作。
文章目录
一、 码云Gitee相关介绍
二、 Gitee注册账号和搭建环境
三、 创建Gitee仓库和提交代码
四、 分支与标签的管理
五、 常用命令
六、 操作时的常见问题
正文
一、 码云Gitee相关介绍
简介:介绍码云gitee的相关信息。
1.1 码云的介绍
码云是现在国内最大的代码托管平台,提供基于Git的代码托管服务,是一个为开发者提供稳定、高效、安全的云端软件开发协作平台。
1.2 码云的功能
除了Git代码托管这个功能,码云还提供代码在线查看、历史版本查看、打包下载任意版本、保护分支、代码质量检测、PaaS 项目演示等功能。
1.3 码云的模式
一个开源项目,开源分为两个群体:核心开发团队、贡献者。核心开发团队,拥有对代码修改的最终决定权;贡献者,能查看源代码但不能对版本库提交修改。
1.3.1 集中式版本控制系统
使用集中式版本控制系统(如SVN):
贡献者不能直接向版本库提交修改的代码。
而核心开发团队,对于涉及到版本库的操作(查看日志、创建分支等)都需要在连网的情况下进行,受网络带宽的影响比较大。
1.3.2 分布式版本控制系统
使用分布式版本控制系统(如Git):
每个开发者本地都拥有一份完整的版本库。
Git不排斥集中式模式,但更倾向于将集中式版本库称为共享版本库。
核心开发团队与共享版本库之间不需要一直保持连接状态(如查看日志、提交、创建分支等),几乎全部操作都(脱离网络)能在本地版本库中完成。
核心开发团队和贡献者(非项目成员)都可以从共享版本库克隆一份本地版本库,但 只有 核心开发团队成员才可以将自己的本地版本库推送到共享版本库上。
贡献者(非项目成员)提交自己对项目修改的两种方式:
用 git format-patch 命令将本地仓库提交转换为补丁文件或补丁文件序列,再通过 邮件 发送给核心开发团队。
搭建 一个自己的 共享版本库 ,通过 邮件 创建一个拉拽请求(Pull Request),让核心开发团队成员到自己的版本库来抓取(Pull)。
1.3.3 码云的协同模式
创建者只需在码云上点击创建版本库,再完成授权和核心开发团队的组建,项目就创建完成了。
贡献者参与项目:
找到想参与的项目,在自己的托管空间下创建一个派生(Fork)的项目(对派生项目的版本库拥有读写的完全权限)。
当贡献者完成开发,并向自己派生的版本库推送后,通过码云向项目的核心开发团队发送一个 Pull Request,请求审核。
核心开发团队收到 Pull Request 后审核代码,审核通过后,执行合并操作接纳贡献者的提交。
如图所示。

二、 Gitee注册账号和搭建环境
简介:介绍初次运行git时的配置、账号的创建、git客户端能否访问git仓库。
2.1 初次运行前的配置
( 2.1 这部分作为理论熟悉,根据自己情况可直接从 2.2 开始操作)
使用前,需要配置自己的Git工作环境,只需要配置一次,以后升级会继续沿用现在的配置(如果需要修改,可以用相同命令修改配置)。
Git 提供了 git config 工具(即 git-config 命令,通过 git 加一个名字来执行此命令),用来配置或读取相应的工作环境变量,这些环境变量决定了 Git 在各个环节的具体工作方式和行为。
变量存放的三个地方:
/etc/gitconfig 文件:系统中对所有用户都适用的配置(如果使用 git config ,选择 –system 选项,读写的就是这个文件)。
~/.gitconfig 文件:用户目录下的配置文件只适用于该用户(如果使用 git config ,选择 –global 选项,读写的就是这个文件)。
.git/config 文件(当前仓库的 Git 目录中的配置文件):这里的配置仅仅针对当前仓库有效(每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量)。
2.1.1 配置用户信息
配置 个人用户名 和 邮箱地址 ,每次 Git 提交时都会引用这两条信息,这两条信息会随更新内容一起写入历史记录,命令如下
git config --global user.name "用户名"git config --global user.email "注册Gitee的邮箱"
如果使用 --global 选项,更改的配置文件就位于用户主目录下,以后 所有仓库 都会默认使用这里配置的用户信息(如果要在某个特定的仓库中使用其他名字或者邮箱,只要去掉 --global 选项重新配置即可,新的设置保存在当前仓库的 .git/config 文件里。)。
2.1.2 文本编辑器配置
Git 需要输入一些额外信息的时,会自动调用系统默认的文本编辑器,如 Vi 或 Vim 。
如果需要自定义,输入以下命令(以 Emacd 为例)
git config --global core.editor emacs2.1.3 差异分析工具配置
这个命令是在解决合并冲突时,使用哪个差异分析工具。
输入以下命令(以改用 vimdiff 为例)
git config --global merge.tool vimdiff另外,Git 可以理解为 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff 等合并工具的输出信息(可以自定义指定的开发工具)。
2.1.4 查看配置信息
检查已有的配置信息
git config --list有时候会看到一样的变量名,则说明它们来自不同的配置文件(如 /etc/gitconfig 和 ~/.gitconfig ),Git 实际采用最后一个。
查阅某个环境变量的设定(把特定的名字跟在后面即可)
git config user.name2.2 注册Gitee账号
打开 浏览器 ,在地址栏输入 Gitee.com ,敲击回车,出现以下界面,点击 加入码云。

出现以下界面,选择注册登录方式

完成注册。
2.3 环境的搭建
2.3.1 配置用户信息
以下操作是用终端模拟器 Cmder ,推荐使用这个工具,这个工具比较便捷,比如需要粘贴,点一下右键就粘贴了。如果不想下载这个工具,也可以在终端操作(打开 终端 快捷键:Win + r ,输入 cmd )。
(下载地址:Cmder官网 ,也可以在网上找相关资源下载)。
打开 Cmder (或 终端 ),输入 git 查看是否显示命令的使用方法。
git
配置 Git 全局用户名和邮箱,注意替换用户名和邮箱
git config --global user.name "用户名"git config --global user.email "注册Gitee的邮箱"
2.3.2 配置免密访问
配置免密访问 Gitee.com 。为了能够向刚创建的仓库提交代码,需要配置加密的密匙到 Gitee.com ,在实现通信加密的同时,不需要用户每次都验证账号输入密码。
在 Cmder 输入以下命令(命令中有双引号的,在双引号中输入邮箱),接着不用输入, 一路敲击回车 就可以了
ssh-keygen -t rsa -C "注册Gitee.com的邮箱地址"
命令执行完后,在 Windows个人用户目录 下会生成一个 .ssh目录 ,打开后可以看到生成的 私钥 和 公钥 文件。

在.ssh目录中,新建两个文本文件 config 和 known_hosts

在 config 文件中加入以下内容( 注意 文件名要删掉后缀.txt)
# gitee 指定私钥路径Host gitee.comHostName gitee.comPreferredAuthentications publickeyIdentityFile ~/.ssh/id_rsa
完成后如下。

打开公钥id_rsa.pub文件(以记事本形式打开),复 制里面的内容。

在 known_hosts 文件中加入复 制的内容,把末尾的 邮箱名删掉 ( 注意 文件名要删掉后缀.txt)。
gitee.com <粘贴id_rsa.pub的内容,并去掉它结尾的邮箱>完成后如下。

登录 Gitee ,点击超链接进入 码云添加SSH公钥,熟悉的话也可以按一下操作进入。
鼠标移到右上角头像处,点击设置。

再点击 SSH公钥 ,在这里添加公钥。

打开后填入一下信息,把 公钥id_rsa.pub 的把 所有 内容复 制这里,点击 确定。

点击 确定 后,会弹出提示,按提示输入验证身份就可以了。

验证成功后,打开 Cmder 输入下面命令测试认证Gitee.com 是否成功。
ssh -T git@gitee.com
认证成功,继续下面的操作。
三、 创建Gitee仓库和提交代码
简介:介绍Gitee仓库的创建、使用Git提交代码。
3.1 创建仓库
3.1.1 创建远程仓库
登录 Gitee.com ,点击右上角的 + 号,再点击 新建仓库。

填写 仓库名称 ,设置 公开 (一般指的是开源项目)或者 私有 ,其他默认(也可以根据自己需要选择)

这里要 勾选 上(如果不勾选,到时候操作不太方便,比如需要用git命令创建仓库)。

选择 分支模型 为 特性/发布模型(根据具体需要选择,比如选择单分支模型),点击 创建 ,仓库创建完成 。

打开仓库,点击 代码 ,选择 SSH ,复 制仓库的SSH访问链接(注意选择的是SSH协议,不是HTTPS协议)。

如果以后需要查看远程仓库的访问连接 ,打开仓库后点击代码 ,在右侧点击 克隆/下载 ,再选择所需要的复 制。

打开 Cmder ,选择存放仓库的地方(根据自己情况选择),输入以下命令。
d:mkdir d:\GitTestcd d:\GitTestgit clone 仓库的SSH访问链接

进入上面所创建目录,查看目录,检查仓库是否下载成功。

3.1.2 创建本地仓库
如果想创建一共git的本地仓库,则按以下操作。
进入到想创建本地git仓库的文件夹,用以下命令(路径是指git本地仓库的路径)。
cd 路径
把这个目录设置成git本地仓库,输入以下命令。
git init
打开文件夹,发现生成了一个 .git 文件夹,表示git的本地仓库创建成功。

3.2 代码提交
3.2.1 提交过程
把需要提交的代码放到该目录下。

进入到克隆下来的仓库。
cd Gitdemo
把代码加入到 暂存区。
git add *
查看 暂存区 的代码,可以看到文件处于new file状态。
git status
把代码提交到 本地仓库 ,双引号内写入本次提交的注释,命令如下
git commit -m "提交内容注释"
再次查看暂存区 ,查看暂存区文件状态,如下图,暂存区没有还没提交到本地仓库的文件。

将 本地仓库提交到远程仓库(即Gitee仓库)。
git push
通过 浏览器 打开 Gitee仓库 ,查看代码是否提交,可以看到提交记录等信息。

3.2.2 修改后再次提交演示
( 3.2.2 的操作,以上面上传的代码为例,读者请根据自己的代码修改)
以 记事本 形式打开 .html 文件,对代码进行修改,修改前如下。

修改完后,点击保存。

用浏览器打开该文件,查看是否修改成功。

根据3.2.1的操作命令,把修改后的代码提交到远程仓库
用到下面这几条命令。
git add *git statusgit commit -m "提交内容注释"git push
把修改的文件放入暂存区( 注意,这两条命令:git add是把修改的代码放入暂存区,git add *是把当前目录所有修改的文件都放入暂存区)。

查看暂存区状态,再把 暂存区 代码提交到 本地仓库。

检查暂存区状态,把 本地仓库 推送到 远程仓库。

再打开浏览器,查看该远程仓库日志,查看是否提交成功。

好了,代码提交演示完成。
四、 分支与标签的管理
简介:介绍如何管理git的分支,如何使用分支进行开发、修复bug。
4.1 管理的背景
在软件开发行业中,有一种常见的版本号分类方法,就是使用数字标记,用点(dot)符号隔开,随着每次版本的更新数字会递增。
软件版本有:开发版 (develop), 新特性版本 (feature), 正式版 , 修复版 (hotfix) 。
例如 1.2.8 这个版本号,通常 1 代表 大版本号 ,代表软件的重大改版更新,架构的大更改;2 代表 小版本号 ,一般是新增一些小功能或模块;6 代表 功能修复 ,就是大家常说的修复bug。
4.2 操作思路
master 是主干分支, 正式版 一般要从主干分支发布。
发布前要在版本位置上标记上版本信息(即打标签-tag),通过打标签,方便以后知道发布的版本对应着哪一次提交的内容。
以上面的创建为例,版本号为 v1.0.0 ,发布三个版本:
正式版v1.0.0。
正式版v1.0.1,包含一个bug修复(hotfix)。
新特性开发版v1.1.0 Build-20200518,包含一个新特性。

4.3 操作步骤
4.3.1 发布正式版
查看本地仓库的分支,*表示当前分支。
git branch
查看本地仓库提交历史(发行版本前,要确定该版本有哪些提交内容)。
git log
给 master 分支(主干)打上标签 v1.0.0。
git tag -a v1.0.0 -m '正式版v1.0.0'
查看所有的标签。
git tag -l
将新增的标签提交到远程仓库。
git push --follow-tags
查看标签是否提交,打开浏览器 ,查看远程仓库 ,点击统计 ,再点击标签。

在下面这里点击发行版 ,可以创建 远程仓库的发行版 ,这样别人就可以直接下载该版本的应用了(在此就不演示这个操作了)。

4.3.2 修复正式版(热修复补丁)
如果需要修复bug(假设正式版v1.0.0发现了一个bug),在 master 分支上,基于 v1.0.0 来修复这个bug,从标签 v1.0.0 新增一个分支来修复。
git checkout -b hotfix-v1.0.1 v1.0.0
查看是否新增的 hotfix-v1.0.1 分支,并且当前正处于这个分支上。
git branch
如果想切换分支,可以输入这个命令来切换不同的分支。
git checkout 分支名称接着以 记事本 形式打开.html文件(和上面一样,请根据自己的代码修改,文章代码的操作演示,是根据我提交的代码来操作的),修改前如图所示。

修改为 正式版v1.0.1 ,点击保存。

接着,在 Cmder 输入以下命令,提交修改。
git add index.htmlgit commit -m "提交内容的注释"git push

因为 hotfix-v1.0.1 只是一个临时分支,所有修改完后要合并到 master 分支。
切换到 master 分支。
git checkout master
把 hotfix-v1.0.1 分支的修改合并到 master 分支上。
git merge --no-ff hotfix-v1.0.1
加上标签 正式版v1.0.1。
git tag -a v1.0.1 -m "正式版v1.0.1"
hotfix-v1.0.1 分支已经合并到 master 分支上,为了方便维护,一般会删掉这个分支,输入以下命令。
git branch -d hotfix-v1.0.1
接着 push 推送到 远程仓库 ,输入以下命令。
git push --follow-tags
查看新的 Tag 是否存在。
git tag -l
打开 浏览器 ,检验以下是否提交成功。

提交完成。
4.3.3 发布新特性版
开发一个新特性版v1.1.0 (假设这个版本短时间内开发不完,需要以迭代方式开发),每日发布一个开发版(版本号后面加上Build的日期)。比如第一次开发是2020年5月18日,则版本号就是v1.1.0 Build-20200518。
为了不影响 master 分支的正常维护(master 分支可能还要发布修复bug),一般需要在v1.0.1 标签这里再新建一个develop分支,输入命令如下。
git checkout -b develop v1.0.1
修改代码内容(请根据自己代码修改)。

修改后如下。

把修改的代码放入 暂存区。
git add 文件名
把 暂存区 的代码提交到 本地仓库。
git commit -m "提交内容的注释"
使用的标签标记为 v1.1.0-Build-20200518。
git tag -a '标签' -m "标签描述"
建立追踪关系,设置本地仓库的分支(好像默认都有origin)对应远程仓库的分支。
git push --set-upstream 现有分支 远程分支
把本地仓库提交到远程仓库,输入以下命令(该命令是追随标签提交)。
git push --follow-tags
打开 浏览器 进入仓库,检验是否提交成功。

好了,提交完成。
4.4 删除指定分支的文件
简介:这一小节就不截图演示了,直接介绍怎样操作。
输入以下命令进入到 Git本地仓库
cd 本地仓库路径查看分支。
git branch -a切换到想操作的分支。
git branch在本地仓库删除想要删除的文件。
git rm [file] //如果想删掉所有文件,则用 * 替代文件名或者用下面这句命令删除。
git rm -r [file] // -r表示递归所有子目录删除后再进行提交(提交到本地仓库)。
git commit -m "提交描述"最后推送到远程仓库。
git push origin五、 常用命令
简介:介绍操作时经常使用到的Git命令。
5.1 Git相关说明
5.1.1 git本地各部分介绍
git本地仓库:
工作区
本地版本库——.git隐藏文件夹
暂存区——修改了的文件,还没提交到仓库。
提交状态
关于暂存区介绍:
本地仓库里面存放了很多东西,其中有个很重要的叫做stage(或者叫index)的暂存区。
git自动创建的第一个分支为master,指向master的一个指针叫做HEAD。
工作区、暂存区、本地版本库、远程版本库之间的关系如下(图片是大二时的资料,源于网络):

5.1.2 分支介绍
| 分支 | 说明 |
| mater | 默认开发分支 |
| origin | 默认远程版本库 |
| HEAD | 指向当前分支的最新提交 |
| HEAD^ | HEAD的父提交 |
5.2 Git常使用到的命令
5.2.1 实用Git命令列表
git clone从git服务器(远程仓库)拉取代码。
git config 配置用户名和邮箱。
git branch操作项目分支(创建、重命名、查看、删除)。项目开发一般是在开发分支进行,开发完后再合并到主干。
git checkout 切换分支。
git status查看文件变动状态。
git add 将文件添加到暂存区。
git commit提交文件变动到版本库(本地仓库)。
git push将本地代码推送到服务器(远程仓库)。
git pull将服务器(远程仓库)上的最新代码拉取到本地。
git log查看版本提交记录(按j往下翻,按k往上翻,按q退出查看)。
git tag为项目标记标签。
.gitignore设置哪些内容不需要推送到服务器(远程仓库)。
关于 .gitignore 操作的介绍:
这是一个配置文件(不是Git的命令),在项目中,通过命令 touch .gitignore 创建一个.gitignore文件,通过编辑器打开创建的这个文件,添加忽略的文件或目录(每行代表一个忽略的文件或目录)。
5.2.2 操作之间联系的命令
本地仓库 与 远程仓库 之间的联系命令:
git remote -v查看远程仓库信息。
git remote show查看指定远程仓库信息。
git remote set-url [remote] [address]修改本地仓库指向的远程仓库的地址。
git init初始化本地版本库。
git clone克隆远程仓库,url指的是远程仓库地址。
git pull [remote] [branch]拉取远程仓库的代码到本地仓库并自动合并。
git fetch下载远程仓库的所有变动。
git push从本地仓库推送到远程仓库。
git push [remote] [branch]上传代码并合并。
git push --tags上传所有标签。
git clone 与 git pull 的区别:
git clone 不需要本地初始化仓库,git pull 则需要。
git clone 本地无需是一个仓库,且克隆将设置额外的远程跟踪分支,文件夹.git里存放与远程仓库一样的版本库记录。
本地仓库 与 暂存区 之间的联系命令:
git status查看暂存区状态。
git diff查看变更内容。
git add把修改的代码放入暂存区。
git add *把当前目录所有修改的文件都加入暂存区。
git add .跟踪所有改动过的文件(别漏掉 . 这点)。
git add跟踪指定的文件。
git rm --cached停止跟踪文件但不删除。
git rm删除文件。
git mv [old] [new]文件改名。
git commit --amend修改最后一次提交。
git commit -m把暂存区代码提交到本地仓库。
对 分支 的操作:
git merge合并指定分支到当前分支。
git branch查看所有本地分支。
git branch创建新分支。
git branch -d合并后删除分支。
git checkout切换到指定分支。
git branch -m [branch-name] [branch-name-new]重命名分支。
对 标签 的操作
git tag查看所有本地标签。
git tag在当前提交(commit)新建一个标签。
git tag [tag] [commit]在指定提交新建一个标签。
git tag -d删除标签。
撤销 的命令
git reset --hard重置暂存区与工作区(与上一次commit保持一致)。
git revert撤销指定的提交。
查看历史信息:
git log查看当前分支的提交历史记录。
git log -p查看指定文件的提交历史。
git log -S 关键词根据关键词搜索提交历史。
git blame [file] 以列表方式查看指定文件的提交历史。
git status显示有变更的文件。
六、 操作时遇到的问题
简介:介绍操作时常遇到的问题。
6.1 修改文件扩展名的方法
需要删掉文件后缀的时候,找不到文件的扩展名,点击 查看 ,勾选 文件扩展名。

找到需要修改的文件,点击文件,右键选择 重命名 ,再修改。

点击 确定。

扩展名修改完成。

6.2 Cmder 提示error: cannot spawn less: No such file or directory
解决方法:把计算机名修改为英文名。
点击 此电脑 ,右键 属性 ,选择 系统保护 或者 高级系统设置。

再在弹出的窗口选择 计算机名 ,接着修改就可以了。

6.3 克隆仓库时提示 warning: You appear to have cloned an empty repository
提示克隆了一个空仓库,这个提示可以忽略的。上面的操作,新建仓库还没有放入内容,就弹出了这个提示,对接下来的操作没有影响的。
6.4 Cmder 提示 Bad owner or permissions on
可能是Windows用户不能访问 .ssh目录 ,导致创建密钥失败,解决操作:
找到 .ssh 文件夹 (一般位于用户目录下,即 C:\Users\Windows用户名 这个目录里面)。
右键 .ssh 文件夹,点击 属性。
点击 安全 --> 高级 ,在弹出的界面的左下角,点击 禁用继承 ,再点击确定
弹出提示窗口,点击 从象中删除所有继承的权限 ,接着你会看到所有用户都删除掉了,让我们添加所有者。
在这个窗口中,点击 编辑 --> 添加 --> 选择用户或组 --> 高级 --> 立即查找 ,点击后会显示用户列表。
选择你的用户账户。
接着一路点击 确定 ,就解决这个问题了。
6.4 执行 ssh-keygen 时提示 could not create directory ‘c:\xxx\ssh’:Invalid argument
可能是Windows的用户名采用了中文或特殊字符,因为命令参数不支持中文和特殊字符,所有导致了创建目录失败,修改下用户名就可以了。
也有可能是没有C盘的访问权限,如果是权限问题,请参考 6.3 的解决方法。
6.5 输入命令后提示 error: invalid key 或 error: invalid argument
查看命令是不是少打空格等,导致参数错误。
6.6 提示 fatal:Authentication failed for ‘https://gitee.com/xxxx’
这个提示是因为使用HTTPS协议管理远程仓库,却使用了错误的gitee用户名和密码,输入正确的注册邮箱和密码就可以解决这个问题了。
6.7 提示 Please tell me who you are
这个提示是因为 Git的 user.name 和 user.email 没有配置,随意导致远程仓库认证失败,配置 gitee用户名和认证邮箱 就可以解决这个问题了。
6.8 提示 warning:LF will be replaced by CRLF in xxxx The file will have its original line endings in your working directory
Git提交到远程仓库时,自动把提交文件的 Windows的分行符 转换为 Linux/Unix的分行符 ,这个提示可以忽略。
6.9 ssh: connect to host git.com port 22: Connection timed out
这是输错命令的了,看清楚命令-。-

好了,总结完了。
继续学习。