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 masterNo commits yetnothing 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 masterNo commits yetUntracked files:(use "git add <file>..." to include in what will be committed)hello.txtnothing 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 masterNo commits yetChanges 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.txt1 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.txtno 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 secondcommit1 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 commit2 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 -vhot-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 -vhot-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 commitmaster  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.txtno 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 -vhot-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 删除远程仓库分支

在这里插入图片描述

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

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

相关文章

【Java】log4j和slf4j区别

log4j&#xff1a;Apache Software Foundation 开源 slf4j&#xff1a;不支持日志滚动等高级功能 在开源库或内部库中使用 SLF4J&#xff0c;将使其独立于任何特定的日志记录实现&#xff0c;这意味着无需为多个库管理多个日志记录配置&#xff0c;您的客户端将会很需要这一点…

【k8s】deamonset文件和说明

目录 deamonset的相关命令 deamonset的定义 deamonset的使用场景 deamonset的例子 deamonset字段说明 serviceAccountName DaemonSet的结构及其各个部分的作用 deamonset的相关命令 #查看<name-space>空间内有哪些deamonset kubectl get DaemonSet -n <na…

Django 学习教程- Django 入门案例

Django学习教程系列 Django学习教程-介绍与安装 前言 本教程是为 Django 5.0 编写的&#xff0c;它支持 Python 3.10 至以上。如果 Django 版本不匹配&#xff0c;可以参考教程 使用右下角的版本切换器来获取你的 Django 版本 &#xff0c;或将 Django 更新到最新版本。如果…

Winclone Pro 10 for Mac:轻松备份和还原你的Windows系统

Winclone Pro 10 for Mac是一款专为Mac用户设计的备份和还原软件&#xff0c;旨在帮助用户轻松管理和保护他们的Windows系统。无论是为了数据安全还是系统的稳定性&#xff0c;Winclone Pro 10都能提供全面的解决方案。 这款软件具备强大的备份功能&#xff0c;能够快速而准确…

Java流程控制语句(if语句,switch语句,for循环,while循环,do...while循环,三种循环的区别)

文章目录 第一章 流程控制语句1.1 流程控制语句分类1.2 顺序结构 第二章 判断语句&#xff1a;if语句2.1 if语句格式1练习1&#xff1a;老丈人选女婿练习2&#xff1a;考试奖励第一种格式的细节&#xff1a; 2.2 if语句格式2练习1&#xff1a;吃饭练习2&#xff1a;影院选座 2.…

AI产品经理 - 如何做一款软硬协同AI产品

【背景】从0做一款软硬协同的AI产品&#xff0c;以智能医药保温箱 1.以智能医药保温箱 2.调研定义市场方向 地点&#xff1a;医药、实验室 场景&#xff1a;长宽高/装箱/运输/实验室 3.需求挖掘 4.如何进行软硬件AI产品工作 软硬件产品设计&#xff1a;功能/硬件外观设计、…

SetWindowsHookEx: 全局钩子实现键盘记录器

简介 SetWindowsHookEx 钩子(Hook)&#xff0c;是Windows消息处理机制的一个平台&#xff0c;应用程序可以在上面设置子程以监视指定窗口的某种消息&#xff0c;而且所监视的窗口可以是其他进程所创建的。当消息到达后&#xff0c;在目标窗口处理函数之前处理它。钩子机制允许应…

Hive生产调优介绍

1.Fetch抓取 Fetch抓取是指&#xff0c;Hive中对某些情况的查询可以不必使用MapReduce计算。例如&#xff1a;SELECT * FROM employees;在这种情况下&#xff0c;Hive可以简单地读取employee对应的存储目录下的文件&#xff0c;然后输出查询结果到控制台。 在hive-default.xml…

云卷云舒:构建业务型电信智能运维方法

1 引言 智能运维&#xff08;AIOps-Algorithmic IT Operations基于算法的IT运维&#xff09;是人工智能技术在IT运维领域的运用&#xff0c;引用Gartner 的报告的一段话“未来几年&#xff0c;将近50%的企业将会在他们的业务和IT运维方面采用AIOps&#xff0c;远远高于今天的10…

php的laravel权限问题

1.这是我新建的一个路由&#xff0c;然后就是说每新建一个路由都要给他开个权限&#xff01;&#xff01;&#xff01;&#xff01; 2.这个是组内大佬写的&#xff1a; 我们也可以在里面加&#xff0c;也可以在浏览器的页面手动加&#xff08;对我们新手来说还是浏览器的页面…

matlab导出高清图片,须经修改后放入latex(例如添加文字说明,matlab画图不易操作)

一、背景 我们在写文章时&#xff0c;使用matlab画图后&#xff0c;如果不需要对图片进行额外修改或调整&#xff0c;例如添加文字说明&#xff0c;即可直接从matlab导出eps格式图片&#xff0c;然后插入到latex使用。 通常latex添加图片&#xff0c;是需要eps格式的。 但很…

微服务实战系列之Dubbo(下)

前言 眼看着2023即将走远&#xff0c;心里想着似乎还有啥&#xff0c;需要再跟各位盆友叨叨。这不说曹操&#xff0c;曹操就来了。趁着上一篇Dubbo博文的余温尚在&#xff0c;博主兴匆匆地“赶制”了Dubbo的下集&#xff0c;以飨读者。 上一篇博主依然从Dubbo的内核出发&#…

原型链补充

1.什么是原型对象 函数的独有属性,他用prototype来表示,可以在函数的prototype上挂载一些公用的属性和方法,供实例化对象来访问。 2.__proto__属性 这个属性每一个对象都有,实例化对象就是通过这个属性,来访问原型对象上的属性和方法的。 3.三者之间的关系 1.在构造函数的原型…

PTA——计算火车运行时间

本题要求根据火车的出发时间和达到时间&#xff0c;编写程序计算整个旅途所用的时间。 输入格式&#xff1a; 输入在一行中给出2个4位正整数&#xff0c;其间以空格分隔&#xff0c;分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数&#xff08;00-23&#xff0…

鸿蒙 DevEco Studio 3.1 入门指南

本文主要记录开发者入门&#xff0c;从软件安装到项目运行&#xff0c;以及后续的学习 1&#xff0c;配置开发环境 1.1 下载安装包 官网下载链接 点击立即下载找到对应版版本 下载完成&#xff0c;按照提示默认安装即可 1.2 下载SDK及工具链 运行已安装的DevEco Studio&…

SPI机制原理+使用

一、概述 SPI全称&#xff08;Service Provider Interface&#xff09;&#xff0c;是JDK内置的一种服务提供发现机制&#xff1b;SPI机制提供了组件发现和注册方式&#xff0c;可以为应用程序提供灵活的插件机制&#xff0c; 主要原理&#xff1a;接口 反射 配置文件。 二、…

Rust学习笔记002: 猜字游戏

version0.1 // 导入标准库中的 io 模块&#xff0c;它包含了输入输出相关的功能 use std::io;// 程序的入口点 fn main() {println!("Guess the number!");println!("Please input your guess.");// 创建一个可变的字符串变量 guess&#xff0c;用于存储用…

【Spring Security】快速入门之案例实操

目录 一、简介 1、什么是安全框架 2、主流的安全框架 3、为什么使用Spring Security 二、引言 1、什么是Spring Security 2、Spring Security工作原理 3、特点 三、快速入门 1、引入依赖 2、配置 3、启动测试 4、配置自定义账号密码 四、Web安全配置类 1.HttpSe…

智安网络|实现安全与网络功能一体化:SASE的全新安全策略

随着企业信息化和数字化程度的不断提升&#xff0c;网络安全面临着前所未有的挑战。传统的网络安全模式已经无法满足日益复杂的安全需求。在这一背景下&#xff0c;安全访问服务边缘&#xff08;SASE&#xff09;崭露头角&#xff0c;并逐渐成为新一代网络安全架构的关键概念。…

云上安全责任共担模型

对于传统自建物理服务器模式&#xff0c;用户需要承担所有的安全责任&#xff0c;负责从物理基础设施到上层应用的所有层面的安全体系构建。 云服务器的安全责任确实与物理服务器不同&#xff0c;云上的安全性是一种责任共担模式&#xff0c;其中云服务器ECS的安全责任需要你&…