git(安装,常用命令,分支操作,gitee,IDEA集成git,IDEA集成gitee,IDEA集成github,远程仓库操作)

文章目录

  • 1. Git概述
    • 1.1 何为版本控制
    • 1.2 为什么需要版本控制
    • 1.3 版本控制工具
    • 1.4 Git简史
    • 1.5 Git工作机制
    • 1.6 Git和代码托管中心
  • 2. Git安装
  • 3. Git常用命令
    • 3.1 设置用户签名
      • 3.1.1 说明
      • 3.1.2 语法
      • 3.1.3 案例实操
    • 3.2 初始化本地库
      • 3.2.1 基本语法
      • 3.2.2 案例实操
      • 3.2.3 结果查看
    • 3.3 查看本地库状态
      • 3.3.1 基本语法
      • 3.3.2 案例实操
        • 3.3.2.1 首次查看本地库状态
        • 3.3.2.2 新增文件(hello.txt)
        • 3.3.2.3 再次查看本地库状态
    • 3.4 添加暂存区
      • 3.4.1 将工作区的文件添加到暂存区
      • 3.4.2 查看状态
    • 3.5 提交本地库
      • 3.5.1 将暂存区的文件提交到本地库
      • 3.5.2 查看状态
    • 3.6 修改文件(hello.txt)
      • 3.6.1 查看状态
      • 3.6.2 添加修改文件到暂存区
      • 3.6.3 查看状态
      • 3.6.4 提交暂存区文件到本地库
    • 3.7 文件批量提交
      • 3.7.1 修改文件并新建其他文件
      • 3.7.2 批量添加修改文件到暂存区
      • 3.7.3 提交暂存区所有文件到本地库
    • 3.8 历史版本
      • 3.8.1 查看历史版本
      • 3.8.2 版本穿梭
        • 3.8.2.1 基本语法
        • 3.8.2.2 git reset案例实操
          • 1、查看历史记录及当前分支所在位置
          • 2、穿梭到指定版本
  • 4. Git分支操作
    • 4.1 什么是分支
    • 4.2 分支的好处
    • 4.3 分支的操作
      • 4.3.1 查看分支
      • 4.3.2 创建分支
      • 4.3.3 master分支修改
      • 4.3.4 切换分支
        • 4.3.4.1 基本语法
        • 4.3.4.2 案例实操
      • 4.3.5 合并分支
        • 4.3.5.1 基本语法
        • 4.3.5.2 案例实操
      • 4.3.6 产生冲突
      • 4.3.7 解决冲突
        • 4.3.7.1 编辑有冲突的文件
        • 4.3.7.2 提交文件
      • 4.3.8 删除分支
        • 4.3.8.1 语法
        • 4.3.8.2 案例实操
    • 4.4 创建分支和切换分支图解
  • 5. Gitee(码云)操作
    • 5.1 Git代码托管服务
    • 5.2 远程代码托管平台
    • 5.3 码云帐号注册和登录
    • 5.4 创建远程仓库
    • 5.5 远程仓库操作
      • 5.5.1 创建远程仓库别名
        • 5.5.1.1 基本语法
        • 5.5.1.2 案例实操
          • 1、查看远程地址列表
          • 2、添加远程仓库地址
          • 3、再次查看仓库地址列表
      • 5.5.2 推送本地分支到远程仓库
        • 5.5.2.1 基本语法
        • 5.5.2.2 案例实操
          • 1、推送本地分支
          • 2、需要输入码云的用户名和密码
      • 5.5.3 克隆远程仓库到本地
        • 5.5.3.1 基本语法
        • 5.5.3.2 案例实操
          • 1、创建新文件夹git-test2
          • 2、拷贝要克隆远程仓库的地址
          • 3、克隆
          • 4、克隆结果
          • 5、小结
      • 5.5.4 邀请加入团队
      • 5.5.5 协作用户修改
        • 5.5.5.1 查看仓库
        • 5.5.5.2 协作用户修改文件
      • 5.5.6 拉取远程库内容
    • 5.6 SSH免密登录
      • 5.6.1 生成ssh密钥对
      • 5.6.2 远程仓库配置公钥
      • 5.6.3 测试
  • 6. IDEA集成Git (本地库)
    • 6.1 IDEA中创建测试项目
    • 6.1 配置Git忽略文件
      • 6.1.1 为什么需要忽略文件
      • 6.1.2 Java各种编辑器的特定文件
        • 6.1.2.1 Eclipse特定文件
        • 6.1.2.2 IDEA特定文件
        • 6.1.2.3 Maven工程的target目录
      • 6.1.3 创建配置忽略文件
        • 6.1.3.1 创建忽略文件
          • 1、IDEA创建springboot项目时默认创建了git忽略文件
          • 2、忽略文件创建规则
          • 3、忽略文件语法
    • 6.2 定位Git程序
    • 6.3 初始化本地库
    • 6.4 添加到暂存区
    • 6.5 提交到本地库
    • 6.6 切换版本
    • 6.7 创建分支
      • 6.7.1 查看所有分支
      • 6.7.2 新建分支
    • 6.8 切换分支
    • 6.9 合并分支
    • 6.10 解决冲突
  • 7. IDEA集成Gitee(码云)
    • 7.1 IDEA集成码云
      • 7.1.1 IDEA安装码云插件
      • 7.1.2 push推送本地库到远程库
        • 7.1.2.1 创建远程仓库
        • 7.1.2.2 将本地代码push到码云远程库
      • 7.1.3 pull拉取远程库到本地库
      • 7.1.4 clone克隆远程库到本地
        • 7.1.4.1 搜索开源项目
        • 7.1.4.2 克隆
    • 7.5 码云复制GitHub项目
  • 8. IDEA集成GitHub
    • 8.1 设置GitHub账号
    • 8.2 分享工程到GitHub
    • 8.3 push推送本地库到远程库
    • 8.4 pull拉取远程库到本地库
    • 8.5 clone克隆远程库到本地
  • 9. 远程仓库操作
    • 9.1 远程仓库创建分支
      • 9.1.1 查看所有远程分支
      • 9.1.2 新建远程分支
    • 9.2 远程仓库切换分支
    • 9.3 克隆远程仓库指定分支
      • 9.3.1 准备
      • 9.3.2 克隆远程仓库指定分支
      • 9.3.3 本地提交更新到远程仓库指定分支
    • 9.4 远程仓库合并分支到master分支
      • 9.4.1 选择合并分支
      • 9.4.2 代码测试审核
      • 9.4.3 合并分支
    • 9.5 删除远程仓库分支

1. Git概述

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git易于学习,占地面积小,性能极快。
它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具。

1.1 何为版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

在这里插入图片描述

1.2 为什么需要版本控制

个人开发过渡到团队协作。

在这里插入图片描述

1.3 版本控制工具

  • 集中式版本控制工具

CVS、SVN(Subversion)、VSS…

集中化的版本控制系统诸如
CVS、SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

在这里插入图片描述

  • 分布式版本控制工具

Git、Mercurial、Bazaar、Darcs…


Git这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)

2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

在这里插入图片描述

1.4 Git简史

在这里插入图片描述

1.5 Git工作机制

在这里插入图片描述

1.6 Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。

  • 局域网

    • GitLab
  • 互联网

    • GitHub(外网)

    • Gitee码云(国内网站)

2. Git安装

官网地址:
https://git-scm.com/或https://github.com/git-for-windows/git/releases

查看GNU协议,可以直接点击下一步。

在这里插入图片描述

选择Git安装位置,要求是非中文并且没有空格的目录,然后下一步。

在这里插入图片描述

Git选项配置,推荐默认设置,然后下一步。

在这里插入图片描述

Git安装目录名,不用修改,直接点击下一步。

在这里插入图片描述

Git的默认编辑器,建议使用默认的Vim编辑器,然后点击下一步。

在这里插入图片描述

默认分支名设置,选择让Git决定,分支名默认为master,下一步。
在这里插入图片描述

修改Git的环境变量,选第一个,不修改环境变量,只在Git Bash里使用Git。

在这里插入图片描述

选择后台客户端连接协议,选默认值OpenSSL,然后下一步。

在这里插入图片描述

配置Git文件的行末换行符,Windows使用CRLF,Linux使用LF,选择第一个自动转换,然后继续下一步。

在这里插入图片描述

选择Git终端类型,选择默认的Git Bash终端,然后继续下一步。

在这里插入图片描述

选择Git pull合并的模式,选择默认,然后下一步。

在这里插入图片描述

选择Git的凭据管理器,选择默认的跨平台的凭据管理器,然后下一步。

在这里插入图片描述

其他配置,选择默认设置,然后下一步。

在这里插入图片描述

实验室功能,技术还不成熟,有已知的bug,不要勾选,然后点击右下角的Install按钮,开始安装Git。

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0fd689b5df754c199cedee0a5161874b.png
)

点击Finsh按钮,Git安装成功!

在这里插入图片描述

右键任意位置,在右键菜单里选择Git Bash Here即可打开Git
Bash命令行终端。

在这里插入图片描述

在Git Bash终端里输入git
–version查看git版本,如图所示,说明Git安装成功。

在这里插入图片描述

3. Git常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户邮箱
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m “日志信息” 文件名(message)提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

3.1 设置用户签名

3.1.1 说明

在使用Git进行版本控制时,我们需要设置用户签名,主要包含:

  • 用户名称(user.name)

  • 用户邮箱(user.email)

用户签名用来标识提交者身份,每次Git提交都会使用以上信息标识提交者身份。多人协作开发同一个仓库时,正确设置用户签名非常重要。

3.1.2 语法

语法如下:

git config --global user.name "your name"
git config --global user.email "your email"

**注意:**这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

3.1.3 案例实操

全局范围的签名设置:

$ git config --global user.name gangge
$ git config --global user.email gangge@atguigu.cn

查看配置是否成功:

$ git config --list

3.2 初始化本地库

Git本地仓库内部维护了一个完整的代码版本库,它存储了所有的版本信息和元数据,使我们有能力进行版本控制

3.2.1 基本语法

创建一个空目录,在目录下执行如下命令:

git init

在这里插入图片描述

3.2.2 案例实操

$ git init
Initialized empty Git repository in F:/git-test1/.git/

3.2.3 结果查看

Git会在执行命令的目录下生成一个名为**.git**的隐藏目录。它就是Git本地仓库,包含所有的版本信息。

在这里插入图片描述

3.3 查看本地库状态

3.3.1 基本语法

git status

3.3.2 案例实操

3.3.2.1 首次查看本地库状态

工作区没有任何文件

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
3.3.2.2 新增文件(hello.txt)
$ vim hello.txt
hello git!
3.3.2.3 再次查看本地库状态

检测到未追踪的文件

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        hello.txt

nothing added to commit but untracked files present (use "git add" to track)

3.4 添加暂存区

3.4.1 将工作区的文件添加到暂存区

1)基本语法

git add 文件名

2)案例实操

$ git add hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory.

3.4.2 查看状态

检测到暂存区有新文件

$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   hello.txt

3.5 提交本地库

3.5.1 将暂存区的文件提交到本地库

1)基本语法

git commit -m "日志信息" 文件名

2)案例实操

$ git commit -m "my first commit hello.txt" hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory.
[master (root-commit) 86366fa] my first commit hello.txt
 1 file changed, 16 insertions(+)
 create mode 100644 hello.txt

3.5.2 查看状态

没有文件需要提交

$ git status
On branch master
nothing to commit, working tree clean

3.6 修改文件(hello.txt)

$ vim hello.txt
hello git! 
hello atguigu! 

3.6.1 查看状态

检测到工作区有文件被修改

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

3.6.2 添加修改文件到暂存区

$ git add hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory.

3.6.3 查看状态

工作区的修改添加到了暂存区

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   hello.txt

3.6.4 提交暂存区文件到本地库

$ git commit -m "my second commit hello.txt" hello.txt
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory.
[master (root-commit) 86366fa] my secondcommit
 1 file changed, 16 insertions(+)
 create mode 100644 hello.txt

3.7 文件批量提交

3.7.1 修改文件并新建其他文件

修改hello.txt

$ vim hello.txt
hello git!
hello atguigu!
hello shanghai!

新增文件hello2.txt

$ vim hello2.txt
hello pangju!

3.7.2 批量添加修改文件到暂存区

$ git add .
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in hello2.txt.
The file will have its original line endings in your working directory

3.7.3 提交暂存区所有文件到本地库

$ git commit -m 'my first batch commit'
[master 8ac2fc4] my first batch commit
 2 files changed, 2 insertions(+)
 create mode 100644 hello2.txt

删除

3.8 历史版本

3.8.1 查看历史版本

1)基本语法

-- 查看版本信息
git reflog 
-- 查看版本详细信息
git log 

2)案例实操

$ git reflog
8ac2fc4 (HEAD -> master) HEAD@{0}: commit: my first batch commit
9ccfb82 HEAD@{1}: commit: my second commit hello.txt
f6c1c01 HEAD@{2}: commit (initial): my first commit hello.txt

3.8.2 版本穿梭

3.8.2.1 基本语法

git reset语法: 回退到某个提交

git reset --hard <commit>
3.8.2.2 git reset案例实操
1、查看历史记录及当前分支所在位置
$ git reflog
8ac2fc4 (HEAD -> master) HEAD@{0}: commit: my first batch commit
9ccfb82 HEAD@{1}: commit: my second commit hello.txt
f6c1c01 HEAD@{2}: commit (initial): my first commit hello.txt

8ac2fc4是当前分支所在位置

2、穿梭到指定版本

切换到f6c1c01版本,也就是我们第一次提交的版本

$ git reset --hard f6c1c01
HEAD is now at f6c1c01 my first commit hello.txt

查看版本切换后的版本日志:

$ git reflog
f6c1c01 (HEAD -> master) HEAD@{0}: reset: moving to f6c1c01
8ac2fc4 HEAD@{1}: commit: my first batch commit
9ccfb82 HEAD@{2}: commit: my second commit hello.txt
f6c1c01 (HEAD -> master) HEAD@{3}: commit (initial): my first commit hello.txt

查看版本切换后hello.txt文件的内容:

$ cat hello.txt
hello git!

切换回8ac2fc4,也就是最后一次提交的版本:

$ git reset --hard 8ac2fc4
HEAD is now at 8ac2fc4 my first batch commit

Git切换版本,底层其实是移动的HEAD指针。

4. Git分支操作

在这里插入图片描述

4.1 什么是分支

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

线上一般存在以下的分支:master(线上),develop(开发),release(预发布),hotfix(线上bug修复)

在这里插入图片描述

  • master: 主分支;主要是稳定的版本分支,正式发布的版本都从Master拉。
  • develop: 开发分支;更新和变动最频繁的分支,正常情况下开发都是在Develop分支上进行的。
  • release:预发行分支;一般来说,代表一个版本的功能全部开发完成后递交测试,测试出Bug后进行修复的分支。
  • features: 功能分支; 其实Features不是一个分支,而是一个分支文件夹。里面包含了每个程序员开发的功能点。Feature开发完成后合入Develop分支。
  • hotfix: 紧急故障修复分支(如现场故障),内部分支,从master拉出此分支,merge到master和develop分支。最希望不会被创建的分支;这个分支的存在是在已经正式上线的版本中,发现了重大Bug进行修复的分支。

4.2 分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

4.3 分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

4.3.1 查看分支

1)基本语法

git branch -v

2)案例实操

*代表当前所在的分支

$ git branch -v
* master 8ac2fc4 my first batch commit

4.3.2 创建分支

1)基本语法

git branch 分支名

2)案例实操

创建分支:

$ git branch hot-fix

查看分支:新创建的分支与当前分支的历史相同,直到我们在这两个分支分别做出新的提交,它们的历史才会产生分歧。

$ git branch -v
  hot-fix 8ac2fc4 my first batch commit
* master  8ac2fc4 my first batch commit

4.3.3 master分支修改

master分支修改hello.txt并提交:

$ vim hello.txt
hello git!
hello atguigu!
hello shanghai!
hello master update!

$ git add .
$ git commit -m 'master分支第一次提交更新'
[master d51987a] master分支第一次提交更新
 1 file changed, 1 insertion(+)

查看分支:

$ git branch -v
  hot-fix 8ac2fc4 my first batch commit
* master  d51987a master分支第一次提交更新

4.3.4 切换分支

4.3.4.1 基本语法
git checkout 分支名
4.3.4.2 案例实操

切换分支:

$ git checkout hot-fix
Switched to branch 'hot-fix'

查看分支:

$ git branch -v
* hot-fix 8ac2fc4 my first batch commit
  master  d51987a master分支第一次提交更新

查看hello.txt内容:和master分支的hello文件内容不一样

$ cat hello.txt
hello git!
hello atguigu!
hello shanghai!

hot-fox分支修改hello.txt并提交:

$ vim hello.txt
hello git!
hello atguigu!
hello shanghai!
hello hot-fix update!

$ git add .

$ git commit -m 'hot-fix分支第一次修改提交'
[hot-fox ea6f7ba] hot-fix分支第一次修改提交
 1 file changed, 1 insertion(+)

4.3.5 合并分支

当我们在不同分支上开发某个功能时,完成开发后需要通过分支合并,将这些功能集成到一起。

4.3.5.1 基本语法
git merge 分支名
4.3.5.2 案例实操

在master分支上合并hot-fix分支

切换到master分支:

$ git checkout master
Switched to branch 'master'

合并hot-fix分支:(master|MERGING)状态表示有冲突

$ git merge hot-fix
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt
Automatic merge failed; fix conflicts and then commit the result.

4.3.6 产生冲突

冲突产生的表现:后面状态为MERGING

atguigu@DESKTOP-ECRD6S9 MINGW64 /f/git-test1 (master|MERGING)
$ cat hello.txt
hello git!
hello atguigu!
hello shanghai!
<<<<<<< HEAD
hello master update!
=======
hello hot-fix update!
>>>>>>> hot-fix

冲突产生的原因:

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。

查看状态(检测到有文件有两处修改)

$ git status
On branch master
You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")

4.3.7 解决冲突

4.3.7.1 编辑有冲突的文件

删除特殊符号,决定要使用的内容

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码
>>>>>>> hot-fix

$ vim hello.txt
hello git!
hello atguigu!
hello shanghai!
hello master update!
hello hot-fox update!
4.3.7.2 提交文件

添加到暂存区:

$ git add .

提交到本地仓库:

$ git commit -m 'master分支合并hot-fix分支解决冲突提交'
[master 37acde7] master分支合并hot-fix分支解决冲突提交

合并解决冲突提交后 MERGING状态消失

4.3.8 删除分支

hot-fix分支已经使用完毕,可以删除

4.3.8.1 语法

删除已合并的分支

git branch -d <branch_name>
4.3.8.2 案例实操

查看分支:

$ git branch -v
  hot-fix ea6f7ba hot-fix分支第一次修改提交
* master  37acde7 master分支合并hot-fix分支解决冲突提交

删除hot-fix分支:

$ git branch -d hot-fix
Deleted branch hot-fix (was ea6f7ba).

再次查看分支:

$ git branch -v
* master 37acde7 master分支合并hot-fix分支解决冲突提交

4.4 创建分支和切换分支图解

在这里插入图片描述

master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。

HEAD如果指向master,那么我们现在就在master分支上,HEAD如果执行hotfix,那么我们现在就在hotfix分支上。

所以切换分支的本质就是移动HEAD指针。

5. Gitee(码云)操作

5.1 Git代码托管服务

前面我们已经知道了Git中存在两种类型的仓库,即本地仓库远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

  • gitHub( 地址:https://github.com/ )

是一个面向开源及私有软件项目的托管平台,因为只支持Git
作为唯一的版本库格式进行托管,故名gitHub

  • 码云(地址: https://gitee.com/ )

国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快

  • GitLab (地址: https://about.gitlab.com/ )

是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

5.2 远程代码托管平台

gitee是一个基于git的代码托管平台, Git 并不像 SVN
那样有个中心服务器。目前我们使用到的 Git
命令都是在本地执行,如果你想通过 Git
分享你的代码或者与其他开发人员合作。
你就需要将数据放到一台其他开发人员能够连接的服务器上。

在这里插入图片描述

远程仓库工作流程:

  • 查看远程仓库

  • 添加远程仓库

  • 克隆远程仓库

  • 移除无效的远程仓库

  • 从远程仓库中抓取与拉取

  • 推送到远程仓库

5.3 码云帐号注册和登录

进入码云官网地址:https://gitee.com/,点击注册Gitee

在这里插入图片描述

输入个人信息,进行注册即可。

在这里插入图片描述

帐号注册成功以后,直接登录。

在这里插入图片描述

登录以后,就可以看到码云官网首页了。

在这里插入图片描述

5.4 创建远程仓库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.5 远程仓库操作

命令名称作用
git remote -v查看当前所有远程地址别名
git remote add 别名 远程地址起别名
git push 别名 分支推送本地分支上的内容到远程仓库
git clone 远程地址将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

5.5.1 创建远程仓库别名

5.5.1.1 基本语法
git remote -v 查看当前所有远程地址别名

git remote add 别名 远程地址
5.5.1.2 案例实操
1、查看远程地址列表
$ git remote -v
2、添加远程仓库地址

使用上面新建远程仓库后的地址

$ git remote add origin https://gitee.com/xgatguigu/git-test.git
3、再次查看仓库地址列表
$ git remote -v
origin  https://gitee.com/xgatguigu/git-test.git (fetch)
origin  https://gitee.com/xgatguigu/git-test.git (push)

5.5.2 推送本地分支到远程仓库

5.5.2.1 基本语法
git push 别名 分支
5.5.2.2 案例实操
1、推送本地分支

推送时需要输入远程仓库的账号密码,参考5.4.2.2第2小节

$ git push origin master
Enumerating objects: 19, done.
Counting objects: 100% (19/19), done.
Delta compression using up to 12 threads
Compressing objects: 100% (13/13), done.
Writing objects: 100% (19/19), 1.67 KiB | 342.00 KiB/s, done.
Total 19 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/xgatguigu/git-test.git
 * [new branch]      master -> master
2、需要输入码云的用户名和密码

注意:密码错误推送会失败

在这里插入图片描述

刷新仓库发现已将我们master分支上的内容推送到Gitee创建的远程仓库。

在这里插入图片描述

5.5.3 克隆远程仓库到本地

5.5.3.1 基本语法
git clone 远程地址
5.5.3.2 案例实操
1、创建新文件夹git-test2

在这里插入图片描述

2、拷贝要克隆远程仓库的地址

在这里插入图片描述

3、克隆
$ git clone https://gitee.com/xgatguigu/git-test.git
Cloning into 'git-test'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 19 (delta 1), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (19/19), done.
Resolving deltas: 100% (1/1), done.

4、克隆结果

在这里插入图片描述

进入git-test执行

在这里插入图片描述

5、小结

clone会做如下操作:

  • 拉取代码
  • 初始化本地仓库
  • 创建别名

5.5.4 邀请加入团队

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.5.5 协作用户修改

5.5.5.1 查看仓库

在这里插入图片描述

5.5.5.2 协作用户修改文件

选择仓库中要更新的文件编辑:

在这里插入图片描述

编辑并提交更新:

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.5.6 拉取远程库内容

1)基本语法

git pull 远程库地址别名 远程分支名

2)案例实操

协作者修改了仓库代码,现在第一个用户可以把远程仓库的更新拉取下来到本地直接合并:

$ git pull origin master

查看拉取后的文件:

$ cat hello.txt
hello git!
hello atguigu!
hello shanghai!
hello master update!
hello hot-fix update!
用户2(协作用户)更新!!!!

5.6 SSH免密登录

远程仓库中除了使用Https方式连接,还可以通过SSH地址连接。

5.6.1 生成ssh密钥对

$ ssh-keygen.exe -t rsa -C 'xugang@atguigu.cn'
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xugang/.ssh/id_rsa):

**注意:**这里的xugang@atguigu.cn只是生成的 sshkey的名称,可以随意编写,rsa是生成密钥对的加密算法。

按照提示三次回车,即可生成 ssh密钥对,在上面提示的路径下可以查看秘钥文件内容
在这里插入图片描述

5.6.2 远程仓库配置公钥

复制生成后的 id_rsa.pub文件内的公钥

远程仓库配置公钥:

​ 主页 「管理」->「部署公钥管理」->「添加部署公钥」

在这里插入图片描述

5.6.3 测试

添加后,在终端(Terminal)中输入

$ ssh -T git@gitee.com

显示如下内容代表成功:

Hi xugang! You've successfully authenticated, but GITEE.COM does not provide shell access.

添加成功后,就可以使用SSH协议对仓库进行操作了。

6. IDEA集成Git (本地库)

6.1 IDEA中创建测试项目

创建springboot项目:git-test3

在这里插入图片描述

6.1 配置Git忽略文件

6.1.1 为什么需要忽略文件

工作过程中产生的日志、缓存文件,编辑器产生的特定、临时文件,敏感信息配置文件以及视频、安装包等较大文件并不适合纳入版本管理。这些文件可以忽略掉。

忽略文件的目的:

  • 减少仓库大小,忽略大文件
  • 忽略编译生成的中间文件
  • 忽略临时文件和敏感信息文件
  • 避免无意义或不必要的提交
  • 保持仓库干净整洁

6.1.2 Java各种编辑器的特定文件

6.1.2.1 Eclipse特定文件

在这里插入图片描述

6.1.2.2 IDEA特定文件

在这里插入图片描述

6.1.2.3 Maven工程的target目录

在这里插入图片描述

6.1.3 创建配置忽略文件

6.1.3.1 创建忽略文件
1、IDEA创建springboot项目时默认创建了git忽略文件

在这里插入图片描述

2、忽略文件创建规则

在项目根目录下创建

忽略规则文件名:.gitignore

3、忽略文件语法
  • 以行为单位定义忽略模式

  • 支持通配符:

    * 匹配0或N个字符、? 匹配一个字符

  • # :注释行

  • / :忽略当前路径
    例如:target/ 表示忽略目录

  • * :用来匹配零或多个字符
    例如:*.class 表示忽略所有以.class结尾的文件

  • ! :否定忽略
    例如:*.class 表示忽略所有以.class结尾的文件,使用 !A.class 可以取消A.class的忽略

6.2 定位Git程序

在这里插入图片描述

6.3 初始化本地库

在这里插入图片描述

在这里插入图片描述

6.4 添加到暂存区

配置需要忽略的文件:

在这里插入图片描述

右键点击项目选择Git -> Add将项目添加到暂存区。

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2d7c7a718874459d9d9eaafd9149aee0.png
)

6.5 提交到本地库

在这里插入图片描述

在这里插入图片描述

6.6 切换版本

为了方便测试,项目可以多次修改提交。

在IDEA的左下角,点击Git,然后点击Log查看版本

在这里插入图片描述

右键选择要切换的版本,然后在菜单里点击Checkout Revision。

在这里插入图片描述

6.7 创建分支

6.7.1 查看所有分支

选择Git,点击Branches按钮。

在这里插入图片描述

6.7.2 新建分支

在弹出的Git Branches框里,点击New Branch按钮。

在这里插入图片描述

填写分支名称,创建hot-fix分支。

****

然后再IDEA的右下角看到hot-fix,说明分支创建成功,并且当前已经切换成hot-fix分支

在这里插入图片描述

6.8 切换分支

在IDEA窗口的右下角,切换到master分支。

在这里插入图片描述

6.9 合并分支

先在hot-fix分支修改文件并提交

在IDEA窗口的右下角,将hot-fix分支合并到当前master分支。

在这里插入图片描述

如果代码没有冲突,分支直接合并成功,分支合并成功以后的代码自动提交,无需手动提交本地库。

6.10 解决冲突

如图所示,如果master分支和hot-fix分支都修改了相同文件代码,在合并分支的时候就会发生冲突。

master分支修改AController并提交:

在这里插入图片描述

切换到hot-fix分支修改AController并提交:

在这里插入图片描述

我们现在站在master分支上合并hot-fix分支,就会发生代码冲突。

在这里插入图片描述

点击Conflicts框里的Merge按钮,进行手动合并代码。

在这里插入图片描述

手动合并完代码以后,点击右下角的Apply按钮。

在这里插入图片描述

代码冲突解决,自动提交本地库。

7. IDEA集成Gitee(码云)

7.1 IDEA集成码云

7.1.1 IDEA安装码云插件

Idea默认不带码云插件,我们第一步要安装Gitee插件。

如图所示,在Idea插件商店搜索Gitee,然后点击右侧的Install按钮。

在这里插入图片描述

Idea链接码云和链接GitHub几乎一样,安装成功后,重启Idea。
在这里插入图片描述

Idea重启以后在Version Control设置里面看到Gitee,说明码云插件安装成功。

在这里插入图片描述

然后在码云插件里面添加码云帐号,我们就可以用Idea连接码云了。

在这里插入图片描述

在这里插入图片描述

7.1.2 push推送本地库到远程库

对于已经通过git本地仓库管理的项目,可以直接推送到git远程仓库

7.1.2.1 创建远程仓库

gitee中创建远程仓库git-test3
在这里插入图片描述

7.1.2.2 将本地代码push到码云远程库

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后选择定义好的远程链接,点击Push即可。
在这里插入图片描述

IDEA右下角会有推送结果提示,下图所示表示推送成功:

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

去码云远程库查看代码。
在这里插入图片描述

只要码云远程库链接定义好以后,对码云远程库进行pull和clone的操作和GitHub相同

7.1.3 pull拉取远程库到本地库

手动在gitee远程仓库中编辑项目代码

IDEA中拉取更新:右键点击项目,可以将远程仓库的内容pull到本地仓库。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**

注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

7.1.4 clone克隆远程库到本地

研究开源项目、或者公司项目协作开发时,项目都会提交到远程仓库管理,一般我们会先将项目克隆到本地使用。

7.1.4.1 搜索开源项目

在这里插入图片描述

获取开源仓库地址:

在这里插入图片描述

7.1.4.2 克隆

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

等待克隆仓库文件下载成功后,按照上面的选择会创建新的工作空间并打开:如下图所示

在这里插入图片描述

7.5 码云复制GitHub项目

码云提供了直接复制GitHub项目的功能,方便我们做项目的迁移和下载。

具体操作如下:

在这里插入图片描述

将GitHub的远程库HTTPS链接复制过来,点击导入按钮即可。

在这里插入图片描述
在这里插入图片描述

如果GitHub项目更新了以后,在码云项目端可以手动重新同步,进行更新!

在这里插入图片描述

8. IDEA集成GitHub

8.1 设置GitHub账号

在这里插入图片描述

如果出现401等情况连接不上的,是因为网络原因,可以使用以下方式连接:
在这里插入图片描述
在这里插入图片描述

然后去GitHub账户上设置token。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

点击生成token。

在这里插入图片描述

复制红框中的字符串到idea中。

在这里插入图片描述

点击登录。

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=assets%2Fimage-20230505084407745.png&pos_id=img-6RhKcJet-1704009204356
)

8.2 分享工程到GitHub

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

来到GitHub中发现已经帮我们创建好了gitTest的远程仓库。

在这里插入图片描述

8.3 push推送本地库到远程库

右键点击项目,可以将当前分支的内容push到GitHub的远程仓库中。

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

在这里插入图片描述

注意:push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的。也就是说,要想push成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先pull拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!

8.4 pull拉取远程库到本地库

右键点击项目,可以将远程仓库的内容pull到本地仓库。

在这里插入图片描述

在这里插入图片描述

注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

8.5 clone克隆远程库到本地

在这里插入图片描述
在这里插入图片描述

为clone下来的项目创建一个工程,然后点击Next。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9. 远程仓库操作

远程仓库操作时:

先克隆远程仓库,将克隆的仓库文件夹导入到工作空间,进行二次开发
编写功能后可以提交更新到本地仓库后再推送到远程仓库

9.1 远程仓库创建分支

9.1.1 查看所有远程分支

在这里插入图片描述
在这里插入图片描述

)

9.1.2 新建远程分支

点击上图新建分支按钮新建分支

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c77fc2c34b9748018b6d1c7558596eee.png

9.2 远程仓库切换分支

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述

9.3 克隆远程仓库指定分支

9.3.1 准备

为了区分,可以在远程仓库切换到hotfix分支后 修改文件提交

在这里插入图片描述

9.3.2 克隆远程仓库指定分支

语法:

git clone -b 远程分支名 远程仓库地址

实操:

git clone -b hotfixt-20230511 https://gitee.com/xgatguigu/git-test3.git

查看克隆结果

9.3.3 本地提交更新到远程仓库指定分支

语法:

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

实操:

修改文件提交到本地仓库:

vim pom.xml
git add .
git commit -m '本地修改hotfix分支文件提交'

推送更新到远程仓库指定分支:

git push origin hotfixt-20230511:hotfixt-20230511

9.4 远程仓库合并分支到master分支

9.4.1 选择合并分支

在这里插入图片描述
在这里插入图片描述

9.4.2 代码测试审核

在这里插入图片描述

9.4.3 合并分支

在这里插入图片描述

回到master分支查看合并结果:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

9.5 删除远程仓库分支

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Innosetup 调用c# dll 和 c# dll的函数导出

目标需求&#xff0c;基于现在安装包脚本。需要在用户安装和卸载成功时。进行数据记录,所以需要调用c#dll 主要涉及到的知识点 需要理解脚本的文件使用机制脚本的文件dll加载&#xff0c;和dll的调用c# dll的制作&#xff0c;和工具的使用 下面具体介绍 脚本的文件dll加载&…

详解Vue3中的鼠标事件mousedown、mouseup和contextmenu

本文主要介绍Vue3中的常见鼠标事件mousedown、mouseup和contextmenu。 目录 一、mousedown——鼠标按下事件二、mouseup——鼠标弹起事件三、contextmenu——页面菜单 下面是Vue 3中常用的鼠标事件mousedown、mouseup和contextmenu的详解。 一、mousedown——鼠标按下事件 mo…

CloneNotSupportedException的解决方案 + Object的clone方法分析

CloneNotSupportedException的解决方案 引入问题&#xff1a; 在一次测试clone方法时&#xff0c;D类Override了Object类的clone方法 public class D {private Integer A1;private Integer A2;public D() {}public D(Integer a1, Integer a2 {A1 a1;A2 a2;}Overrideprotec…

PAT 乙级 1042 字符统计

请编写程序&#xff0c;找出一段给定文字中出现最频繁的那个英文字母。 输入格式&#xff1a; 输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成&#xff0c;至少包含 1 个英文字母&#xff0c;以回车结束&#xff08;回车不算在内…

软件测试/测试开发丨Python 内置库 sys 学习笔记分享

sys 概述 是 Python 自带的内置模块是与 Python 解释器交互的桥梁 sys 使用 常用属性常用方法导入 sys 模块 # 导入sys模块 import sys# 查看sys模块帮助文档 help(sys)# 查看sys模块的属性和方法 print(dir(sys))sys 常用属性 sys.version&#xff1a;返回 Python 解释器…

Linux基础知识学习2

tree命令的使用 可以看到dir2目录下的这些文件&#xff0c;要想显示dir2的具体结构&#xff0c;可用tree命令 mv命令 它可以实现两个功能 1.将文件移动到另一个目录中 2.对某一个文件进行重命名 1.将文件移动到另一个目录中 这里将dir1中的2.txt移动到他的子目录dir3中 执行…

虚拟化分类和实现原理

6、虚拟化分类 &#xff08;1&#xff09;完全虚拟化 直接将Hypervisor跑在0环内核态&#xff0c;客户机os跑在1环&#xff0c;一旦触发敏感指令&#xff0c;由0环的VMM进行捕获翻译&#xff0c;从而模 拟这些指令。而运行在1环的GuestOS永远都不知道自己是个虚拟机。是完全…

python统计分析——透视表

参考资料&#xff1a;用Python动手学统计学 pandas库的pivot_table函数相当于excel的透视表功能。此图为excel数据透视表字段设置窗口&#xff0c;下面将参照excel数据透视表相关设置图片学习pivot_table函数&#xff1a; 本次使用的数据集内容如下&#xff1a; import pandas…

python安装MongoDB与运算符优先级

python安装MongoDB MongoDB 是目前最流行的 NoSQL 数据库之一&#xff0c;使用的数据类型 BSON&#xff08;类似 JSON&#xff09;。 PyMongo Python 要连接 MongoDB 需要 MongoDB 驱动&#xff0c;这里我们使用 PyMongo 驱动来连接。 pip 安装 pip 是一个通用的 Python 包…

【STM32】STM32学习笔记-PWM驱动LED呼吸灯 舵机 直流电机(16)

00. 目录 文章目录 00. 目录01. 输出比较相关API1.1 TIM_OC1Init1.2 TIM_OCInitTypeDef结构体1.3 TIM_OCMode1.4 TIM_OutputState1.5 TIM_OutputNState1.6 TIM_OCPolarity1.7 TIM_OCNPolarity1.8 TIM_OCPolarity1.9 TIM_OCNPolarity 02. PWM实现呼吸灯接线图03. PWM实现呼吸灯示…

普中STM32-PZ6806L开发板(前序)

前言 突然从柜子看到七八年前买的一块普中开发板, 在诸多的例如野火、原子中当时为什么选择他, 现在来看应该还是性价比较高&#xff0c;班上集成了很多学习者的进阶模块了&#xff0c;当然&#xff0c;买完大程度就吃灰了&#xff0c;当我再次发现他的时候&#xff0c; 我看到…

独立站的营销策略:吸引顾客的秘密武器

一、独立站的重要性 独立站是指企业自主建立的电子商务网站&#xff0c;具有独立的域名和运营管理权。通过独立站&#xff0c;企业可以展示产品信息、提供在线服务、进行促销活动等&#xff0c;与顾客建立互动和信任关系。独立站的重要性在于它可以帮助企业建立品牌认知度、提…

【NTN 卫星通信】Oneweb星座以及Oneweb与Starlink比较

1 什么是OneWeb OneWeb于2012年以WorldVu的名义成立&#xff0c;于2020年开始构建其星座。然而&#xff0c;对于这家英国公司来说&#xff0c;这是一个艰难的旅程&#xff0c;OneWeb于2020年3月宣布破产&#xff0c;并认为covid-19大流行是一个主要因素。OneWeb星座当时仅完成…

trino-435: 理论基础

一、trino介绍 Trino是⼀种⽀持使⽤ SQL 访问任意数据源的 开源的分布式SQL 查询引擎&#xff0c;其能够提供更加灵活与⾼效的查询服务。为不同的异构数据源提供统⼀的sql访问&#xff0c;并⽀持联邦查询和并⾏查询。 应⽤场景 Trino是定位在数据仓库和数据分析业务的分布式S…

#前后端分离# 头条发布系统

头条业务简介 新闻的分页浏览通过标题关键字搜索新闻查看新闻详情新闻的修改和删除用户注册、登录 预览界面 开源上线 https://gitcode.net/NVG_Haru/NodeJS_5161447 数据库设计 数据库脚本 CREATE DATABASE sm_db;USE sm_db;SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0…

python的pywebio库给孩子做加减法数学题

效果展示 程序执行后&#xff0c;打开浏览器&#xff0c;展示一些100以内的加减法混合运算的数学题并输入答案后判断对错&#xff0c;这样倒是省了买教材的钱了。 在题目下方的框中&#xff0c;输入答案&#xff0c;然后点击提交后&#xff0c; 会输出结果 pywebio库介绍 安装…

详解FreeRTOS:FreeRTOSConfig.h系统配置文件(拓展篇—1)

目录 1、“INCLUDE_”宏 2、“config”宏 实际使用FreeRTOS的时候,时常需要根据自己需求来配置 FreeRTOS,不同架构的MCU,配置也不同。 FreeRTOS的系统配置文件为FreeRTOSConfig.h,在配置文件中可以完成FreeRTOS的裁剪和配置,这是非常重要的一个文件,本篇博文就来讲解这…

文件批量整理,文件归类整理,文件批量归类

我们每天都要面对无数的文件&#xff0c;从工作报告、个人照片到电影和音乐。如何有效地管理和归类这些文件&#xff0c;成为了我们日常生活和工作中所要处理的。今天&#xff0c;小编就给大家介绍一款简单易用的工具——文件批量改名高手&#xff0c;助你轻松实现文件批量归类…

45、激活函数 - 为什么非线性这么重要

这一节开始讲一讲神经网络中的激活函数,在讲激活函数之前,先讲一下非线性。 看一个基础知识:线性函数的叠加,我们初中学过的知识点。 假设有一个线性函数,y = kx + b, 这个函数画出来是下面的样子,这里显示 y 和 x 是线性关系。 而如果这个时候又有一个线性关系 z = hy…

基于JAVA的独居老人物资配送系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4.2 新增物资4.3 查询物资4.4 查询物资配送4.5 新增物资配送 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的独居老人物资配送系统&#xff0c;包含了社区档案、…