【工具与中间件】GitGitHub相关知识与一些问题解决、工具推荐

news2024/12/27 17:54:26

文章目录

  • 前言
  • 1. Git 基础快速回顾
    • 1.1 Git 相关概念简单回顾
    • 1.2 Git 基本命令
      • 1.2.1 分支命令
      • 1.2.2 推拉命令
  • 2. Git Hub 创建仓库
  • 3. 版本控制实战
    • 3.1 创建本地项目
    • 3.2 绑定远程仓库
    • 3.3 代码推拉
      • 3.3.1 推拉实战
      • 3.3.2 合并请求
  • 4. 补充与总结
    • 4.1 可能会遇到的问题
    • 4.2 补充:规范提交CZ
    • 4.3 总结
  • 参考资料

Git与GitHub:仓库初始化初级流程

前言

截止发文,全世界刚迈入2024年,大家都又老了一岁,不由感叹:记忆力真是一天不如一天了。

事情是这样的:为了完成于2021年谋划,在2022年准备执行,又在2023年未完成的目标——“将技术栈从基础开始过一遍并尽可能点亮更多的技能树”,我又双叒叕在新一年的开始准备新一轮的学习。强迫症,对应的学习相关知识与代码一定要建一个远程仓库,并版本控制。是的,新年立flag,今年应该能完成既定目标

可日常工作中一般远程环境已配好,且早就将pullpush绑定在工具上,图形操作,又因为流程严格控制等原因,我已经快大半年没自己建过仓库并管理啦,如今正要建仓,感觉自己是条金鱼(实际上是条咸鱼),完全记不起来怎么做!于是,借此机会,用本文作一个记录,记录自己GitHub:仓库初始化并绑定刚初始化的项目的流程。俺是菜鸟,就从初级的一些简单操作开始吧!

学习目标

  • 初步会用GitHub等仓库。
  • 结合一些图形化界面,初步会用Git进行版本控制。

学习步骤

    1. Git 基础快速回顾
    1. 创建 GitHub 远程仓库,并初始化
    1. 编写 Hello world,自己给自己版本控制

1. Git 基础快速回顾

来都来了,首先要快速回顾一下 Git 的基础。这一小节我们简单列举Git一些需要掌握的概念,然后列一个基本、常用的命令表格。

1.1 Git 相关概念简单回顾

Git 是一个开源的分布式版本控制系统。

Git三大区域

  • 工作区
  • 缓存区
  • 资源区

关于这三个区域的详解,可参考:CSDN-优秀Git详细教程

对于想要快速回顾的大佬,以及像我一样的新手,简单来说,Git 有这几个区,常用的一些的操作与这几个区有关。了解这几个区,有助于接下来的学习。至于日常使用,我们一般情况下熟练运用常用的一些命令,以及了解一些策略,尽可能避免代码冲突即可。

好了,概念的快速回顾完毕,接下来我们快速学习 Git 的一些基本命令。

1.2 Git 基本命令

常用的初级命令基本如下。

1.2.1 分支命令

# 查看分支
git branch

# 查看远程分支
git branch -v

# 创建分支
git branch [name]

# 切换分支
git checkout [name]

# 创建并切换分支
git checkout -b [name]

# 将当前分支与参数name的分支合并
git merge [name]

# 删除分支
git branch -d [name]

1.2.2 推拉命令

# 本地创建初始化
git init

# 本地克隆
git clone [url]

# 查看远程仓库
git remote -v

# 添加至暂存区
git add

# 提交到分支
git commit -m "description"

# 推送push
git push [remoteName] [localBranchName]

# 拉取pull
git pull [remoteName] [localBranchName]

以上命令,初级阶段,已经够用了。至于高级一些的命令,如rebasecherry-pick等,深入学习时再了解。

2. Git Hub 创建仓库

有了上一小节对 Git 这个工具的大致并快速的回顾,我们接下来就可以创建仓库,并将回顾的知识很快用上了!

以下是创建 GitHub 远程仓库的参考步骤:

New 仓库
1

必填信息
2

结果
3

出现这个熟悉的初始化界面,我们的仓库就创建成功啦!

3. 版本控制实战

3.1 创建本地项目

老了,渐渐跟不上时代了。个人尚未涉足新LTS Java 17,暂时先用回Java 8:
4

接下来这个项目要用到什么依赖,到时候用到再添加即可,此处不赘述。

创建好项目后,本地启动看看有没有报错,无的话,这一步就大功告成。

3.2 绑定远程仓库

首先,我们进入我们新建项目的根目录,然后,选择以下步骤执行:

创建本地仓库

git init

绑定仓库

git reomte remove origin [url]

特别地,如果我们是用原有的项目换绑的情况下,需要执行以下完整的
一般绑定/换绑远程仓库命令:

# 查看远程地址
git remote -v 
# 移除原有地址
git reomte remove origin [url] 
# 添加远程仓库
git remote set-url origin [url]

这里由于是新仓库,我们直接绑定即可。

当然,以上步骤都是可以通过集成工具的图形化界面完成的。

3.3 代码推拉

这一小节我们先写一个hello world,对新项目进行推拉实战吧。

3.3.1 推拉实战

例行公事,写个 hello world:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

项目根目录下,执行

# 查看 分支状态 信息
git status

# 全部添加到暂存区
git add .

# commit
git commit -m 'description'

接下来,就是推拉代码啦:

# 先拉远程分支, gitHub 默认为main
git pull origin [branch_name]

# 推到远程分支
git push origin [branch_name]

3.3.2 合并请求

5

4. 补充与总结

4.1 可能会遇到的问题

若许久没有对自己的远程仓库操作过,那么此次初次操作时,可能会出现:

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

参考解决方案

    1. 重新配置SSH key:
ssh-keygen -t rsa

生成的SSH key 具体路径在 C:\用户\用户名.ssh 文件夹

    1. 若在之后报
ssh: connect to host github.com port 22: Connection timed out

Please make sure you have the correct access rights
and the repository exists.

并且,检查过网络没有问题,则:

    • 先执行 ssh -T -p 443 git@ssh.github.com查看鉴权信息。
    • 在我们生成 ssh key 的目录下,编辑一个config文件,注意,该文件命名为config,并且没有后缀,内容如下:
Host github.com
User [your_email]
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

其中,查询自己的 email 配置可以采用:git config --list命令,这个配置的意思是,将github.com这个host,用443端口进行ssh链接。之后,就能通过 443 端口,实现github代码推拉。

    1. 还没完,一般新仓库,初次 commit 时,会报:
fatal: refusing to merge unrelated histories

解决方案

git pull origin main --allow-unrelated-histories 

一般情况下,pull 操作 会 auto-merge。
然后add 、 commit 并 push 一下就好了。

4.2 补充:规范提交CZ

若是全栈同学,推荐使用CZ规范提交,先准备一个npm,然后步骤如下:

下载commitizen

npm install -g commitizen

下载cli

npm install -g conventional-changelog conventional-changelog-cli

配置

commitizen init cz-conventional-changelog --save-dev --save-exact

接着,就可以使用 git cz 提交代码啦。不过要十分注意的是,由于 cz 需要 node 进行管理,后端项目要配置好gitignore文件,纯后端玩cz也会造成多了一个前端依赖包的别扭。但无论如何,规范 commit 是一项好习惯,虽然有点别扭,但cz确实可以为我们的规范提交节省一点时间。

4.3 总结

趁自己还记得点东西,复习一遍 GitHub 仓库 & Git 基础用法。希望能有一点参考价值。 本文我们主要学习了:

  1. Git 基本概念:作用、三大区域。关于这些概念,是我们日后对这个工具深入学习的基础,多少先事先了解一下。推荐阅读文中提到的参考文章。
  2. GitHub 建仓:我们的目标始终指向远程仓库,并尽可能多练习版本控制。建仓是最基本的第一步。
  3. 绑定远程仓库:这一小节记录了初始化仓库后,本地创建项目并绑定远程仓库,以及绑定的一些步骤与注意点。
  4. 推拉实战、合并请求:实际工作中最常用的步骤。
  5. 实用的一些补充,问题解决方案与推荐工具。

参考资料

  • CSDN-Git入门参考文章
  • CSDN-优秀Git详细教程

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

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

相关文章

Unity -简单键鼠事件和虚拟轴

简单键鼠事件 — “Test_03” KeyTest 键鼠事件每帧都要监听,要放在Update()中处理 public class KeyTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){// 【鼠标点击事件…

15.1_使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测)

使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测) 1,一个简单的状态机设计:可重复性序列检测器2,可重复性状态机序列检测实现2.1,RTL设计代码实现2.2,tb测试代…

加码OT安全丨Fortinet与施耐德电气携手共创工业零信任安全创新方案

近日,专注于推动网络与安全融合的全球网络安全领导者 Fortinet在施耐德电气举办的第四季“绿色智能制造创赢计划”结营仪式上,正式与其签署联创方案合作协议,成为施耐德电气“生态合作伙伴”。双方将依托“基于关键装置/设备的微隔离防护”这…

【RT-DETR有效改进】Google | EfficientNetV2一种超轻量又高效的网络 (轻量化网络)

前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持Re…

Oracle 高级网络压缩 白皮书

英文版白皮书在这里 或 这里。 本文包括了对英文白皮书的翻译,和我觉得较重要的要点总结。 执行概述 Oracle Database 12 引入了一项新功能:高级网络压缩,作为高级压缩选项的一部分。 本文概述了高级网络压缩、其优点、配置细节和性能分析…

基于SpringBoot的儿童疫苗预约系统的设计与实现-计算机毕业设计源码12222

摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 儿童疫苗预约管理,主要的模块包括查看首页、站点管理(轮播图、公告栏)用户管理(管理员、系统用…

【开源】基于JAVA语言的课程案例资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员需求分析2.2 用户需求分析 三、系统设计3.1 业务流程设计3.1.1 管理员业务流程设计3.1.2 用户业务流程设计3.1.3 首页功能模块及业务流程分析3.1.4 案例资源中心功能模块及业务流程分析3.1.5 用户信息中心功能模块…

seaborn可视化示例详解

目录 1、散点图 2、散点图回归线 3、折线图 4、频数柱状图 5、分组散点图 6、箱型图 7、数值分布柱状图 8、频数分布图 9、联合分布图 10、数值分布柱状图 11、相关系数热力图 划重点 少走10年弯路 Seaborn是一个基于Python的数据可视化库,Seaborn提供了许多用…

Keepalived + Nginx双主架构

Keepalived Nginx双主架构 环境准备: keepalived_master1服务器nginx:172.20.26.167 keepalived_master2服务器nginx:172.20.26.198 各服务器关闭selinux、防火墙等服务。 开机安装部署nginx 在172.20.26.167服务器上 yum install ngi…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (15) | 变分自编码器和扩散模型

前言 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5💻 CS231n: 深度学习计算机视觉(2017&#xf…

冒泡排序-BubbleSort

1、基本思路 从数组的左边开始,比较两个元素的大小,当左边大于右边时,更换左右元素位置,否则不改变;接着向右移动一步,比较第二个元素和第三个元素的大小,重复上述操作,直到最后一个…

chapter12-实战成绩通知短信系统(下)

注意!成绩短息通知服务的源码共分为两种:第一种为线性的程序,逻辑简单,但是格式杂乱;第二种为以类作为基础,封装了各种函数,逻辑较为复杂,但是格式清晰。建议新手先学习第一种代码风…

2. SpringBoot3 实战之用户模块接口开发

文章目录 开发模式和环境搭建开发模式环境搭建 1. 用户注册1.1 注册接口基本代码编写1.2 注册接口参数校验 2. 用户登录2.1 登录接口基本代码编写2.2 登录认证2.2.1 登录认证引入2.2.2 JWT 简介2.2.3 登录功能集成 JWT2.2.4 拦截器 3. 获取用户详细信息3.1 获取用户详细信息基本…

优化算法--李沐

目录 1.1梯度下降 1.2随机梯度下降 1.3小批量随机梯度下降 1.4冲量法 1.5 Adam 损失值也就是预测值与真实值之间的差值是f(x),x是所有超参数组成的一条向量,c是可以限制的,比如说权重大于等于0。 使用迭代优化算法求解一般只能保证找到局…

web开发学习笔记(12.mysql数据库进阶)

1.多表查询 2.内连接 3.外连接,分为左外连接和右外连接 左外连接完全包含左表的数据和两个表的交集 右外连接完全包含右表的数据和两个表的交集 4.子查询,又成为嵌套查询 分为标量子查询和列子查询和行子查询 首先是标量子查询 列子查询 in, not in…

sqlilabs第六十一六十二关

Less-61(GET - challenge - Double Query- 5 queries allowed -Variation 4) 手工注入 报错注入 Less-62(GET - challenge - Bilnd- 130 queries allowed -Variation 1) 手工注入 过于复杂简单写写 这个应该是用不了只能用延时 自动注入 写个脚本就可以

Mysql-全局锁、表锁、行锁

本文已收录于专栏 《数据库》 目录 全局锁概述说明开启方式应用场景 表锁概念说明实现方式意向锁 开启方式 行锁概念说明实现方式记录锁:间隙锁临键锁 总结提升 全局锁 概述说明 全局锁是是对整个数据库实例加锁,加锁后整个实例就处于只读状态&#xff…

bat批处理基础教学

bat批处理基础教学 titleset命令模式-算数运算重定向运算多命令运算| 管道符--左边的结果作为右边的输入接受外部参数 -%1注释 rem命令公共介绍- /?时间命令 date time启动 start调用其他bat文件 call计划任务查看环境变量 settelnet是远程端口命令,不加密判断ifpause>null…

Vue中$watch()方法和watch属性的区别

vue中$watch()和watch属性都是监听值的变化的,是同一个作用,但是有两个不同写法。 用法一: //注意:这种方法是监听不到对象的变化的。 this.$watch((newVal,oldVal)>{ }) 用法二: watch:{xxx:(newVal,oldVal)>…

66 C++对象模型探索。C++编译器在什么时候给我们创建默认的构造函数?

一 前提,关于C编译器给我们生成 默认构造函数 的错误认知 传统知识认为:如果在一个类中,我们没有定义任何的构造函数,那么编译器会为我们隐式自动定义一个默认的构造函数,我们称这种构造函数为 "合成的默认构造函…