我是李慢慢。
最近的树莓派没少敲代码,因为每天都在更新,更兼有很多精巧小功能的测试代码,自己管理自己的代码就成了大问题,以前分享代码给大家都是用百度网盘,实在是太不“程序员”了,直到最近了解到还有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 emacs
2.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.name
2.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.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
完成后如下。
打开公钥id_rsa.pub文件(以记事本形式打开),复 制里面的内容。
在 known_hosts 文件中加入复 制的内容,把末尾的 邮箱名删掉 ( 注意 文件名要删掉后缀.txt)。
gitee.com <粘贴id_rsa.pub的内容,并去掉它结尾的邮箱>
完成后如下。
登录 Gitee ,点击超链接进入 码云添加SSH公钥,熟悉的话也可以按一下操作进入。
鼠标移到右上角头像处,点击设置。
再点击 SSH公钥 ,在这里添加公钥。
打开后填入一下信息,把 公钥id_rsa.pub 的把 所有 内容复 制这里,点击 确定。
点击 确定 后,会弹出提示,按提示输入验证身份就可以了。
验证成功后,打开 Cmder 输入下面命令测试认证Gitee.com 是否成功。
ssh-Tgit@gitee.com
认证成功,继续下面的操作。
三、 创建Gitee仓库和提交代码
简介:介绍Gitee仓库的创建、使用Git提交代码。
3.1 创建仓库
3.1.1 创建远程仓库
登录 Gitee.com ,点击右上角的 + 号,再点击 新建仓库。
填写 仓库名称 ,设置 公开 (一般指的是开源项目)或者 私有 ,其他默认(也可以根据自己需要选择)
这里要 勾选 上(如果不勾选,到时候操作不太方便,比如需要用git命令创建仓库)。
选择 分支模型 为 特性/发布模型(根据具体需要选择,比如选择单分支模型),点击 创建 ,仓库创建完成 。
打开仓库,点击 代码 ,选择 SSH ,复 制仓库的SSH访问链接(注意选择的是SSH协议,不是HTTPS协议)。
如果以后需要查看远程仓库的访问连接 ,打开仓库后点击代码 ,在右侧点击 克隆/下载 ,再选择所需要的复 制。
打开 Cmder ,选择存放仓库的地方(根据自己情况选择),输入以下命令。
d:
mkdir d:\GitTest
cd d:\GitTest
git 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 status
git 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.html
git 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
这是输错命令的了,看清楚命令-。-
好了,总结完了。
继续学习。