当前位置: 首页 > news >正文

gitee使用教程

一、gitee的使用

1.1、基本操作

检查是否安装gitee 以及 查看当前安装的gitee的版本:

git --version

安装gitee:

sudo apt install git -y                 Ubuntu版本

sudo yum install git -y                centOS版本

创建本地仓库:

首先创建一个目录,然后对目录执行下面命令,这样该目录就变成了本地仓库。

git init

配置本地仓库:

当本地仓库刚创建好时,使用前必须先为本地仓库配置name,email属性,命令如下:

git config user.name "name值"

git config user.email "email值"

查看所有配置信息:

git config -l

删除某条配置信息:

git config --unset 配置信息中等号左侧部分(如user.name)

若当前机器中存在很多本地仓库,配置信息时使用 --global 选项可以使这条配置信息在所有仓库中生效。例如:

git config --global user.name "name值"

使用 --global 配置的信息无法通过 git config --unset 命令直接删除,必须在该命令上也加上 --global 才能删除。如下:(删除user.name属性)

git config --global --unset user.name

工作区,版本库,暂存区:

我们创建好的本地仓库会自动添加一个 .git 文件,我们称这个 .git 文件为版本库,这个版本库⾥⾯的所有⽂件都可以被 Git 管理起来,每个⽂件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。本地仓库中除去版本库以外的部分叫做工作区,存放我们当前正在编辑和修改的文件。版本库中还有一个暂存区,当我们执行 git add 命令时,会先将我们要 add 的文件放到暂存区,当我们执行 git commit 时才真正将文件存入版本库。

添加文件:(将工作区的文件提交到本地仓库中)

对于一个我们写好后想要提交的文件,我们可以先通过 git add 命令将其提交到暂存区。如下:

git add filename1 filename2.....         将一个或多个文件添加到暂存区

git add dir(如 . )                             将指定目录添加到暂存区

再使用 git commit 将暂存区内容添加到本地仓库中,如下:

git commit -m "本次提交的描述信息"                         提交暂存区全部内容到本地仓库中

git commit filename1 filename2 ...... -m "描述信息"   提交暂存区中指定文件到仓库中

查看历史提交记录:

git log        该命令显⽰从最近到最远的提交⽇志,并且可以看到我们 commit 时的⽇志消息。

如果嫌输出信息太多,看起来很不方便,可以加上 --pretty=oneline 参数:

  • --pretty=oneline:将每个提交信息压缩为一行显示(提交哈希和提交说明)。

git log --pretty=oneline

更多选项:

  • --graph:以图形化方式显示提交历史的分支结构。
  • --abbrev-commit:仅显示提交哈希的前几位(默认7位),缩短输出长度。

git log --graph --pretty=oneline --abbrev-commit

查看当前仓库状态:

git status

该命令可以查看距离上次提交后都有哪些文件被修改了,以及哪些文件被 add 但还没有commit。

查看某文件暂存区和工作区的差异:

git diff 文件名

版本回退:(使用前提:commit 后没有进行 push 操作)
“回退”本质是 要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定。如下:

git reset  [--soft  |  --mixed  |  --hard]  [HEAD] 

  • --soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
  • --mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将版本库和暂存区的内容退回为指定提交版本内容,⼯作区⽂件保持不变。
  • --hard 参数将版本库,暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。

HEAD :可直接写成 commit id(通过git log命令查),表⽰指定退回的版本。如果回退后想变回回退之前的版本也可以,只需要对应的 commit id。但是回退后 git log 查不到之前的 commit id,需要使用 git reflog,该命令⽤来记录本地的每⼀次命令。另外还有如下方法指定回退版本:

  • HEAD 表⽰当前版本
  • HEAD^ 上⼀个版本
  • HEAD^^ 上上⼀个版本
  • 以此类推...

也可以使⽤ ~数字 表⽰:

  • HEAD~0 表⽰当前版本
  • HEAD~1 上⼀个版本
  • HEAD~2 上上⼀个版本
  • 以此类推...

撤销修改:(使用前提:commit 后没有进行 push 操作)

情况一:当前工作区中新增代码并没有进行 add 和 commit 操作。

我们可以使⽤如下命令让⼯作区的⽂件回到最近⼀次 add 或 commit 时的状态。

git checkout -- [file]

-- 很重要,切记不要省略,⼀旦省略,该命令就变为其他意思了。

情况二:当前工作区新增代码进行了 add 操作,但没有进行 commit 操作。

使用 git reset 命令进行回退,回退到当前版本,可以将暂存区回退到上一次 commit 后的样子,工作区代码也回退到上一次 commit 后的版本(使用--hard选项),也可以使用 --mixed 选项只回退暂存区,然后就变为了第一种情况。

情况三:当前工作区的新增代码即进行了add操作,也进行了commit操作。

使用git reset 命令进行回退,回退到上一版本即可。

删除文件:

方法一:先使用 rm 命令删除不要的文件,在使用 git add 删除文件的文件名 命令加 git commit 命令将暂存区和版本库中的文件也删除掉。

方法二:使用 git rm 要删除文件的文件名 命令将工作区和暂存区中不要的文件删除,再使用 git commit 命令将版本库中不要的文件也删除。

注意:如果误删文件回退就行。

1.2、分支管理

查看当前本地所有分支:

git branch

创建分支:

git branch 新分支名称

切换分支:

git checkout  已存在分支名称

git checkout -b 新分支名称                  创建并切换到新的分支   

合并分支:

git merge 需要合并的分支名称

例如,当前本地存在 dev 和 master 两个分支,dev 提交新的内容后,master 分支看不到,如果master 想要看到这部分内容,这时就需要将 dev 分支的内容合并到 master 中,这时需要先将当前所处的分支切换为 master 分支然后在 master 分支中执行 git merge dev 命令,将 dev 分支合并到 master 中,就可以看到 dev 分支提交的内容了。

删除分支:

git branch -d 分支名称                如果当前分支未被融合,使用该命令可能无法删除该分支

git branch -D 分支名称                强制删除该分支

注意:当删除某一分支:时,你不可以处于当前要删除的分支中。例如想要删除 dev 分支,你不能处在 dev 分支中对其进行删除操作,你可以在其他分支中,如 master 分支中对 dev 分支进行删除。

分⽀管理策略:

通常合并分⽀时,如果可能,Git 会采⽤ Fast forward 模式。

在这种 Fast forward 模式下,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息,看不出来最新提 交到底是 merge 进来的还是正常提交的。但是在 Git 中,还有一种模式,从分⽀历史上就可以看出分⽀信息。例如我们现在删除了在合并冲突时创建的 dev1 分⽀,但依旧能看到 master其实是由其他分⽀合并得到。具体命令如下:

git merge --no-ff -m "合并描述信息"  合并的分支名称

--no-ff 参数,表⽰禁⽤ Fast forward 模式。禁⽤ Fast forward 模式后合并会创建⼀个新的 commit ,所以加上 -m 参数,把描述写进去。

1.3、远程操作

创建仓库:

首先登录gitee网页,点击右上角加号,然后点击新建仓库。如下图:

然后填写基本信息,仓库可以选择开源或者私有,选择私有创建仓库后也可以更改设置为开源。

  • 私有仓库设置开源教程

首先进入创建好的仓库,点击右上角管理,如下图:

进入管理后,点击基本信息,划到最下面,选择开源,并勾选同意协议,点击保存,仓库就变成开源的了。如下图:

  • 忽略特殊⽂件

在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎 么让 Git 知道呢?在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件名填进去,Git 就会⾃动忽略这些⽂件了。不需要从头写 .gitignore ⽂件,gitee 在创建仓库时就可以为我们⽣成,不过需要我们主动勾选⼀ 下:

但有些时候,你就是想添加⼀个⽂件到 Git,但由于这个⽂件被 .gitignore 忽略了,根本添加不 了,有两种方法。

方法一:可以⽤ -f 强制添加:(这种办法破坏了.gitignore的规则,不推荐

git add -f [filename]

方法二:.gitignore中设置不忽略该文件

! 文件名     

例如:!a.so    表示不忽略 a.so 文件          

相当于给这个文件特权,相同结尾的文件都会忽略,但是这个名字的不会忽略

如果 .gitignore 写得有问题,需要找出来到底哪个规则写错了,⽐如说 a.so ⽂件是要被添加的,可以⽤ git check-ignore 命令检查:

命令:git check-ignore -v a.so

应答:.gitignore:3:*.so a.so

应答表明,.gitignore 的第3⾏规则忽略了该⽂件,于是我们就可以知道应该修订哪个规则。

  • 创建仓库中设置模版的介绍

如上图,创建仓库时可以设置模版。其中Readme文件主要是用来介绍当前仓库的,使仓库拥有者以外的人员快速了解仓库的用途和其他方面的细节;Issue 文件主要是用来提交当前仓库中存在的问题,类似于工单,有人发现问题就会创建一个 issue,然后在 issue 中描述 bug 信息,再由开发人员解决;Pull Request 文件是用来提交合并请求的,在实际开发过程中会有很多分支,每个分支的开发任务完成后不能直接合并到主分支防止冲突,需要先提交 Pull Request,即合并请求。

克隆远程仓库:

克隆/下载远端仓库到本地,需要使⽤ git clone 命令,后⾯跟上我们的远端仓库的链接,远端仓库 的链接可以从仓库中找到:选择“克隆/下载”获取远程仓库链接:

SSH 协议和 HTTPS 协议是 Git 最常使⽤的两种数据传输协议。SSH 协议使⽤了公钥加密和公钥登陆机制,体现了其实⽤性和安全性,使⽤此协议需要将我们的公钥放上服务器,由 Git 服务器进⾏管理。使 ⽤ HTTPS ⽅式时,没有要求,可以直接克隆下来。

使⽤ HTTPS ⽅式:

git clone HTTPS的克隆链接

使⽤ SSH ⽅式:

使⽤ SSH ⽅式克隆仓库,如果没有添加公钥到远端库中,服务器会拒绝我们的 clone 链接。需要 我们设置⼀下:

首先查看是否配置了公钥,操作如下图:

点击进入后即可查看是否配置过公钥,配置了几个。如下图:

配置公钥第⼀步:创建SSH Key。在用户主⽬录下,看看有没有.ssh⽬录,如果有,再看看这个⽬录下有没有 id_rsa 和 id_rsa.pub 这两个⽂件,如果已经有了,可直接跳到下⼀步。如果没有,需要创建 SSH Key,执行下面命令即可:

ssh-keygen -t rsa -C "绑定到gitee上的邮箱"

id_rsa 和 id_rsa.pub 两个⽂件,这两个就是SSH Key的秘钥对, id_rsa 是私钥,不能泄露出去, id_rsa.pub 是公钥,可以放⼼地告诉任何⼈。

第⼆步:从文件中将公钥拿出来(cat 命令打印一下文件内容即可),添加⾃⼰的公钥到远端仓库。

添加成功后,就可以使用 SSH 的链接进行 git clone 了。

向远程仓库推送:

提交时要注意,如果我们之前设置过全局的 name 和 e-mail,这两项配置需要和 gitee 上配置的⽤户名和邮箱⼀致,否则会出错。或者从来没有设置过全局的 name 和 e-mail,那么我们第⼀次提交时也会报错。这就需要我们重新配置下了,同样要注意需要和 gitee 上配置的⽤户名和邮箱⼀致。

用户名:(红色框起来的部分除去@符号就是用户名了)

邮箱:(点击设置后在里面就可以找到邮箱)

推送命令:

git push 

完整用法:(当远程分支不存在时,自动创建远程分支)

git push <远程主机名>  <本地分⽀名> : <远程分⽀名>

# 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:

git push <远程主机名>  <本地分⽀名>

例如:git push origin master

拉取远程仓库:

git pull <远程主机名>  <远程分⽀名> : <本地分⽀名>

# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。

git pull <远程主机名>  <远程分⽀名>

例如:git pull origin master

查看远程主机名:

git remote -v

注意:远程主机名默认通常是 origin,当你运行 git clone 时,Git 会自动将远程仓库命名为 origin。

给命令配置别名:

git config --global alias.别名  实际命令

举个例⼦,将 git status 简化为 git st ,对应的命令为:

git config --global alias.st status

--global 参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有⽤。如果不加,那只 针对当前的仓库起作⽤。

1.4、标签管理

标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名。例如,在项⽬ 发布某个版本的时候,针对最后⼀次 commit 起⼀个 v1.0 这样的标签来标识⾥程碑的意义。

这有什么⽤呢?相较于难以记住的 commit id , tag 很好的解决这个问题,因为 tag ⼀定要给⼀ 个让⼈容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使⽤标签就能很快定位 到。

创建标签:

⾸先,切换到需要打标签的分⽀上,然后,敲命令 git tag [name] 就可以打⼀个新标签。默认标签是打在最新提交的 commit 上的。

git tag [name]                name是标签的名称

给指定提交打标签:

找到历史提交的commit id(git log命令),然后打上就可以了,命令如下:

git tag 标签名 commit id

Git 还提供可以创建带有说明的标签,⽤-a指定标签名,-m指定说明⽂字,格式为:

git tag -a [name] -m "XXX" [commit_id]

查看所有标签:

git tag 

注意,标签不是按时间顺序列出,⽽是按字⺟排序的。

查看标签信息:

git show [tagname]

删除标签:(本地删除)

git tag -d 标签名

因为创建的标签都只存储在本地,不会⾃动推送到远程。所以,打错的标签可以在本地安全删除。

将标签推送远程:

git push <远程主机名>  <tagname>        推送指定标签

git push <远程主机名> --tags                  一次性推送所有标签

删除远程标签:

先从本地删除,然后使用 push 操作,将删除操作推送到远程。本地删除和上面一样,push 操作如下:

git push <远程主机名> <tagname>

1.5、多人协作

列出所有远程跟踪分支:

git branch -r

列出所有本地分支和远程跟踪分支:

git branch -a

显示本地分支及其关联的上游(远程)分支,并包含最新提交信息:

git branch -vv

创建新本地分支并进入该分支,并且关联远程分支:

git checkout -b 新本地分支名称   远程主机名/远程分支

例如:git checkout -b dev  origin/dev

将已经创建好的本地分支关联远程分支:

git branch --set-upstream-to=远程主机名(通常为origin)/远程分支名 本地分支名

在同⼀分⽀(master之外的分支)下进⾏多⼈协作的⼯作模式通常是这样:

  1. 首先进入 master 分支,通过 git pull 确保 master 分支的内容是最新的。
  2. 然后进入 master 之外的另一个开发分支,将 master 分支合并到该分支中,解决合并冲突问题。
  3. 最后在进入master分支,将解决冲突后的开发分支合并进来。

远程分⽀删除后,本地 git branch -a 依然能看到的解决办法:

执行下面命令删除那些远程仓库不存在的分⽀。对于本地仓库的删除,前面已经提到了。

git remote prune origin(根据情况替换为实际的远程主机名)

使⽤命令 git remote show origin(根据情况替换为实际的远程主机名) ,可以查看remote地址,远程分⽀,还有本地分⽀与之相对应关系等信息。

http://www.dtcms.com/a/312289.html

相关文章:

  • 昇思学习营-开发版-模型推理和性能优化
  • 在 Elasticsearch 中使用 LTR 参与检索
  • k8s+isulad 国产化技术栈云原生技术栈搭建3-master节点安装
  • 查找位置函数
  • 垃圾收集器G1ZGC详解
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 77-1(题目+回答)
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 76-1(题目+回答)
  • set和map使用
  • 技巧|SwanLab记录混淆矩阵攻略
  • express-jwt报错:Error: algorithms should be set
  • 【智能体cooragent】不同的单智能体调用的大模型的推理的输入与输出
  • 笔试——Day26
  • 【LLM】如何在Cursor中调用Dify工作流
  • Makefile 从入门到精通:自动化构建的艺术
  • 【Java基础知识 16】 数组详解
  • 微积分思想的严密性转变 | 极限、逼近与程序化
  • 计算机技术与软件专业技术资格(水平)考试简介
  • 【Pytorch✨】LSTM01 入门
  • 集成电路学习:什么是HAL硬件抽象层
  • 【设计模式】 3.设计模式基本原则
  • 对于考研数学的理解
  • 【攻防实战】记一次DOUBLETROUBLE攻防实战
  • build文件夹下面的主要配置文件
  • win10任务栏出问题了,原来是wincompressbar导致的
  • 扫雷游戏完整代码
  • RK3399 启动流程 --从复位到系统加载
  • Munge 安全认证和授权服务的工作原理,以及与 Slurm 的配合
  • 【python】转移本地安装的python包
  • vue3 新手学习入门
  • 【LeetCode 热题 100】(三)滑动窗口