快速学会 IDEA 中 Git 的使用与 GitHub 仓库创建、连接、发布

news2024/9/21 12:29:18
🍎道阻且长,行则将至。🍓

 目录

  • 一、Git 🌴
    • 1.Git 工作流程
    • 2.Git 安装
    • 3.常用命令
    • 4.分支
  • 二、远程仓库 GitHub 🌵
    • 1.注册使用
    • 2.配置 SSH 公钥
    • 3.在 IDEA 中配置
    • 3.IDEA to GitHub
    • 4.创建分支
    • 5.commit 到仓库
    • 6.从远程仓库中抓取和拉取
    • 7.GitHub 的简单页面发布


为什么要使用 Git 版本控制,我们先看看一下场景:
场景一:备份
小明负责的模块就要完成了,就在即将 Release 之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流。
场景二:代码还原
这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的代码已经回不到从前了。
场景三:协同开发
小刚和小强先后从文件服务器上下载了同一个文件:Analysis.java。小刚在 Analysis.java 文件中的第 30 行声明了一个方法,叫 count(),先保存到了文件服务器上;小强在 Analysis.java 文件中的第 50 行声明了一个方法,叫 sum(),也随后保存到了文件服务器上,于是,count() 方法就只存在于小刚的记忆中了。
场景四:追溯问题代码的编写人和编写时间
老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!
就拿这次来说吧,有个 Bug 调试了 30 多个小时才知道是因为相关属性没有在应用初始化时赋值!可是二胖、王东、刘流和正经牛都不承认是自己干的!
Git 分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网了,因为版本库就在你自己的电脑上。多人协作只需要各自的修改推送给对方,就能互相看到对方的修改了。

一、Git 🌴

1.Git 工作流程

在这里插入图片描述

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库
  2. checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
  3. add(添加): 在提交前先将代码提交到暂存区
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
    fetch+merge
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
  • 我们看到图上有远程仓库还有本地仓库,那这两个是什么?
    远程仓库和本地仓库都是一个代码存放的地方,远程仓库例如:GitHub、gitee 等类型的远程代码托管服务以及一些自己搭建的服务;本地仓库就在你的工作机上,例如你创建一个 Git 仓库之后你的工作文件夹里多出来一个 .git 的隐藏文件夹,
    在这里插入图片描述

2.Git 安装

进入 Git 的官网 https://git-scm.com 对应下载安装即可。
在这里插入图片描述
没有其他需求一路默认安装,结束之后你的鼠标右键点击会出现两个 Git 功能:
在这里插入图片描述
Git GUI:Git 提供的图形界面工具
Git Bash:Git 提供的命令行工具

3.常用命令

Git Bash 使用滚轮按下进行粘贴。

  1. git init
    在你的当前目录下创建仓库 repository,果创建成功后可在文件夹下看到隐藏的 .git 目录。
    Git 工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行 Git 的命令而发生变化。
    在这里插入图片描述

  2. git add (工作区 → 暂存区)
    添加工作区一个或多个文件的修改到暂存区:
    git add 单个文件名|通配符
    将所有修改加入暂存区:git add

  3. git commit (暂存区 → 本地仓库)
    提交暂存区内容到本地仓库的当前分支

  4. git status:查看的修改的状态(暂存区、工作区)

  5. git log 查看提交日志
    git log [option]
    options:
    – all 显示所有分支
    – pretty=oneline 将提交信息显示为一行
    – abbrev-commit 使得输出的commitId更简短
    – graph 以图的形式显示

.gitignore 的文件 : 忽略列表,有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。

4.分支

使用分支可以把你的工作从开发主线上分离开来进行重大的 Bug 修改、开发新的功能,以免影响开发主线。

  1. git branch :查看本地分支
  2. git branch 分支名 :创建本地分支
  3. git checkout 分支名 :切换分支
  4. git merge 分支名称 :合并分支,一个分支上的提交可以合并到另一个分支
  5. git branch -d b1 删除分支时,需要做各种检查
    git branch -D b1 不做任何检查,强制删除
    只能删除其他分支

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突:

  1. 处理文件中冲突的地方
  2. 将解决完冲突的文件加入暂存区(add)
  3. 提交到仓库(commit)

二、远程仓库 GitHub 🌵

Git 中存在两种类型的仓库,即本地仓库和远程仓库。Git 远程仓库常见的有 GitHub、Gitee等,这一节以 GitHub 为例进行配置使用远程仓库。

1.注册使用

官网 https://github.com 。
注册完成之后点击 +,Create a new repository:
在这里插入图片描述
按你的情况填写即可,
在这里插入图片描述
创建成功之后你会看到以下界面,第一个框框里面 SHH 给出的就是你的远程仓库地址:
在这里插入图片描述
非空仓库的就点 Code 查看:
在这里插入图片描述

2.配置 SSH 公钥

你只有 远程仓库地址时,你还是不能提交到远程仓库,这时候还需要我们生成 SSH 公钥(证明我是我),并配置到远程仓库。

  1. 生成 SSH 公钥
    Git bash :ssh-keygen -t rsa
    会在你的文件夹里面生成这样的文件(控制台会提示你在哪):
    在这里插入图片描述
    使用记事本打开这个文件复制里面全部内容。
  2. 配置GitHub
    打开个人中心的 Settings:
    在这里插入图片描述
    选择 SSH and GPG keys:
    在这里插入图片描述
    填写你的 SSH:
    在这里插入图片描述

3.在 IDEA 中配置

打开 settings,搜索 Git,如果 Git 是默认安装的则这里直接可以看到 Git 的 path,否则你需要设置一下地址,设置成功点击 test 可以看到版本号:
在这里插入图片描述
可以继续在下面的 GitHub 添加:
在这里插入图片描述
选择第二个使用 Token:
在这里插入图片描述
直接点击 Generate 自动跳转到你的 GitHub,配置好的 token 会给你列举在下面:
在这里插入图片描述
   你可以使用 Revoke all、delete 删除你的授权。
然后得到你的 token 后填入 IDEA,你的账号就会列举在当前列表。

3.IDEA to GitHub

你可以在IDEA的 VCS 或者 Git 中上传到 GitHub:
在这里插入图片描述
设置你的仓库名称、描述:
在这里插入图片描述
点击 share:
在这里插入图片描述
等待一段时间提时完成了:
在这里插入图片描述
这时候我们打开 GitHub 发现项目里面的代码已经上传上去了:
在这里插入图片描述

4.创建分支

我们项目想创建一个分支进行操作,可使用 branch 或者 new branch:
在这里插入图片描述 在这里插入图片描述
输入分支名称:
在这里插入图片描述

我们可以在右下角查看分支情况:
在这里插入图片描述
点击一个分支后,在这个界面里我们可以进行切换分支,并入分支以及删除分支
在这里插入图片描述
打开左下角的 Git 我们可以看到 Log:
在这里插入图片描述

5.commit 到仓库

在这里插入图片描述
在 Git 的快捷界面提供的 commit 和 push 可以帮助我们提交到本地仓库和远程仓库:
在这里插入图片描述 在这里插入图片描述
克隆远程仓库到本地。

例如我们本地有了一个新分支,我们使用 Push 提交到远程仓库:
在这里插入图片描述
在这里插入图片描述 提示成功 Push
打开 Git 在这里插入图片描述或者 GitHub 可以看到新分支出现了:
在这里插入图片描述 在这里插入图片描述

当我们本地和远程仓库有多个分支的时候,如果不统一就会忘记分支的对应关系,可以使用 git branch -vv
查看本地分支和远程分支的关联:
在这里插入图片描述
上图可看出本地分支有 3 个:master、develop_V1 和 develop_V2,其中 develop_V2 是在 develop_V1 上创建的分支,且没有 Push 到远程仓库,而另外两个都 Push的远程仓库了。

note:切换分支前先提交本地的修改。

创建 .ignore 文件:
在 git 目录下打开 gitbash
执行指令 touch .gitignore

6.从远程仓库中抓取和拉取

远程分支和本地的分支一样,我们可以进行 merge 操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。

抓取命令:git fetch [remote name] [branch name]
抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
如果不指定远端名称和分支名,则抓取所有分支

拉取 命令:git pull [remote name] [branch name]
拉取指令就是将远端仓库的修改拉到本地并自动进行合并等同于 fetch + merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支。

在 IDEA 中直接使用工具:
在这里插入图片描述
选择抓取仓库以及分支:
在这里插入图片描述

7.GitHub 的简单页面发布

当你的项目是正常可显示,或者里面有 README.md 文件,我们可以使用 GitHub 发布作为网页来浏览。
在这里插入图片描述
Save:
在这里插入图片描述
在 Actions 中可以看到页面正在建立:
在这里插入图片描述
成功!
在这里插入图片描述
在这里插入图片描述
但是我的这个项目是没有可显示的页面的:
在这里插入图片描述
在另一个有写 README.md 文件的进行发布:

在这里插入图片描述
访问链接路径:成功啦
**在这里插入图片描述**


☕物有本末,事有终始,知所先后。🍭

🍎☝☝☝☝☝我的CSDN☝☝☝☝☝☝🍓

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

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

相关文章

【数据结构与算法】无队头指针的队列置空队、判队空 、入队和出队算法

题目 Qestion: 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点 (注意不设头指针) ,试编写相应的置空队、判队空、入队和出队等算法。 核心思路 该队列的特殊之处: 用链表来表示队列该链表为带头节点的链表该…

VM ware workstation安装mac虚拟机

一. 工具准备 VMware workstation mac os的镜像文件(链接:https://pan.baidu.com/s/1AdDGFU186bqKvW4wuGtpqw ,提取码:tdvc) 下载一个auto-unlocker文件(https://github.com/paolo-projects/auto-unlocke…

人工智能十大流行算法,通俗易懂讲明白

人工智能是什么?很多人都知道,但大多又都说不清楚。 事实上,人工智能已经存在于我们生活中很久了。 比如我们常常用到的邮箱,其中垃圾邮件过滤就是依靠人工智能;比如每个智能手机都配备的指纹识别或人脸识别&#x…

「QT」QT中new的对象不需要delete的原因

博客主页:何曾参静谧的博客 文章专栏:「QT」QT5快速学习 目录 说明注意事项说明 在QT中,一般来说,通过new关键字创建的对象由QT的对象树来管理,而通过其他方式创建的对象就需要手动释放。QT的对象树可以看做是QT提供的一种内存管理机制,它能够自动地管理和释放对象的内存…

Xilinx之7系列时钟规划失败解析

目录 一 、前言 二、时钟规划 ​2.1 时钟单元经过非时钟路径 2.2 资源不足 2.3 跨半区 一 、前言 在设计的工程中,经常会在implementation的布局或布线阶段失败,下面将针对xilinx 7系列时钟规划失败的场景进行分类描述。本文示例器件为xc7k480tffv1…

华为笔记本怎么录屏?分享2个实用方法

案例:如何对华为笔记本电脑进行屏幕录制? 【今天刚刚了解到电脑可以录屏,但是我拿着我的华为电脑找了半天,也找不到它的屏幕录制功能在哪。华为电脑录屏功能在哪?华为笔记本怎么录屏?有没有大神可以教教我…

DNS缓存失效,nginx死循环访问造成连接数瞬间飚高的问题

0.背景介绍 某服务domain.com.cn 之前DNS解析到服务真实地址10.1.1.11,后面需要对用户登录增加黑名单功能,于是在openresty针对服务domain.com.cn的特性完成了黑名单功能。黑名单功能已经上线几个月,但是DNS从服务真实地址10.1.1.11切换到ope…

Spring MVC 参数解析(13)

目录 简介 调用流程 1. 首先,还是需要进行到前端控制器的doDispatch方法,这是我们的调用Spring MVC的核心入口方法 2. 在doDispatch方法内部,我们调用到了HandlerAdapter.handle(*****) 方法 3. 最终,我们会来到 RequestMappi…

完美解决丨2. `TypeError: list indices must be integers or slices, not str`

‘tuple’ object does not support item assignment 原因: tuple 是一个元素不可变的列表,如果尝试对 tuple 中的某个元素进行修改,会报错。 解决办法: 需要将 tuple 转换为 list,然后再把 list 转换为 tuple。 示例…

最长公共上升子序列LCIS

最长公共上升子序列LCIS 题目链接: acwing272. 最长公共上升子序列 题目描述: 输入输出: 题解: 首先考虑 最长上升子序列和 最长公共子序列问题 最长上升子序列的状态表示与状态转移如下: 状态表示: 用f[i],来表示以A[i]结尾的A[1~i]最长上升子序列的长度(注意,该上…

WPF教程(三)--事件Event调用

1、WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序才停止运行。 ShutDown 是隐式或显式发生,可以通过指定 ShutdownMode 的属性值来进行设置。 对ShutdownMode选项的更改,可以直接在App.xaml中更改&a…

coinex // 撮合引擎 逻辑流程 (两种数据源 初始化源和前端源)

目录 1 生产者 数据源 1.1. match-server 一启动 初始化数据 自动查询数据库 查询level2要展示的数据 1.2 match-server接收 前端发给Exchange-server的数据 2. 将查询/接受的数据EntrustOrder 转成 Order 解耦 过滤掉不要的属性 3.Order转成 OrderEvent 4. 分配序号发布…

【初学ROS,年轻人的第一个Node节点】

【初学ROS,年轻人的第一个Node节点】 1. 工作空间设置2. 创建Package3. 回访依赖包4. 创建Node节点5. 源码编译6. 运行Node节点7. Node节点完善8. 总结 本教程是B站阿杰视频的笔记 视频地址:https://www.bilibili.com/video/BV1nG411V7HW 超声波传感器 …

界面组件DevExtreme v22.2新版亮点 - 各UI组件增强升级

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

geometric distribution and exponential distribution(几何分布和指数分布)

几何分布 分布函数均值和方差意义 表示经过k次实验才第一次得到正确的实验结果 比如抛硬币得到正面的需要抛的次数 指数分布 分布函数均值和方差意义 表示经过一段x之后,某件事第一次发生 比如经过x时间之后,公交车来的概率 比如餐厅从开业到第一个客人…

基于ArcGIS 服务获取气象栅格某点位值及数据更新

1. 背景 假如有很多气象数据,不想通过后台脚本去获取数据,想通过前台服务的rest接口去识别,并且这些栅格数据可能是需要更新变化的,以下对一些技术方法做一个简单的介绍。 需求概述: 点击某一个点,获取影…

设计模式 --- 概述

一、设计模式概述 1.1、软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任 克里斯托夫亚历山大 (Christopher Alexander&…

c/c++:三维数组,字符数组和字符串,统计字符串中字符出现的频次,scanf输入空格,正则匹配表达式

c/c:三维数组,字符数组和字符串,统计字符串中字符出现的频次,scanf输入空格,正则匹配表达式 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的话, 我所知…

WPF教程(十一)---数据绑定(4)--数据类绑定

一、排序 如果想以特定的方式对数据进行排序,可以绑定到 CollectionViewSource,而不是直接绑定到 ObjectDataProvider。CollectionViewSource 则会成为数据源,并充当截取 ObjectDataProvider 中的数据的媒介,并提供排序、分组和筛…

PMP项目管理-[第六章]进度管理

进度管理知识体系: 规划进度管理: 定义活动: 排列活动顺序: 估算活动持续时间: 制定进度计划: 6.1 规划进度管理 定义:为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档的过程 作…