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

【Git】(基础篇四)—— GitHub使用

GitHub使用

经过上一篇的文章,相信大家已经对git的基本操作熟悉了,但哪些使用git的方法只是在本地仓库进行,本文介绍如何使用git和远程仓库进行连接使用。

Github和Gitee

主要用到的两个远程仓库在线平台是github和gitee

GitHub

GitHub 是全球最大的代码托管平台之一,由 GitHub Inc. 运营,后来被微软收购。它不仅是一个代码仓库,还是一个社交编程网站,用户可以关注其他开发者、创建组织和团队、管理项目等。GitHub 提供了免费的公共仓库和付费的私有仓库选项,以及一系列的开发工具和集成服务。

Gitee(码云)

Gitee 是中国的代码托管平台,类似于 GitHub,但它针对中国用户进行了优化,提供了更快的数据传输速度和更好的中文支持。Gitee 同样支持公共和私有仓库,提供项目管理、代码审查、持续集成等功能。由于其在中国的服务器位置,Gitee 在国内访问速度通常比 GitHub 快。

使用Gitee对于中国人更加友好,但如果你英语过关的话,可以尝试去github上面看看,github上面的项目更多,尤其是一些涉及前沿技术的项目。下面的示例我也将使用github进行展示,在熟练使用github之后,gitee的使用就会非常简单了。

Github基本概念

在github中打开一个项目之后,其中会包含一些菜单选项

在这里插入图片描述

Repository:仓库的意思,即你的项目,你想在 GitHub 上开源一个项目,那就必须要新建一个 Repository,如果你开源的项目多了,你就拥有了多个 Repositories 。

Issue:问题的意思,举个例子,就是你开源了一个项目,别人发现你的项目中有bug,或者哪些地方做的不够好,他就可以给你提个 Issue ,即问题,提的问题多了,也就是 Issues ,然后你看到了这些问题就可以去逐个修复,修复ok了就可以一个个的 Close 掉。

Star:这个好理解,就是给项目点赞,但是在 GitHub 上的点赞远比微博、知乎点赞难的多,如果你有一个项目获得100个star都算很不容易了!

**Fork:**这个不好翻译,如果实在要翻译我把他翻译成分叉,什么意思呢?你开源了一个项目,别人想在你这个项目的基础上做些改进,然后应用到自己的项目中,这个时候他就可以 Fork 你的项目,这个时候他的 GitHub 主页上就多了一个项目,只不过这个项目是基于你的项目基础(本质上是在原有项目的基础上新建了一个分支,分支的概念后面会在讲解Git的时候说到),他就可以随心所欲的去改进,但是丝毫不会影响原有项目的代码与结构。

Pull Request:发起请求,这个其实是基于 Fork 的,还是上面那个例子,如果别人在你基础上做了改进,后
来觉得改进的很不错,应该要把这些改进让更多的人收益,于是就想把自己的改进合并到原有项目里,这个时候他就可以发起一个 Pull Request(简称PR) ,原有项目创建人就可以收到这个请求,这个时候他会仔细review你的代码,并且测试觉得OK了,就会接受你的PR,这个时候你做的改进原有项目就会拥有了。

Watch:这个也好理解就是观察,如果你 Watch 了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。

Gist:有些时候你没有项目可以开源,只是单纯的想分享一些代码片段,那这个时候 Gist 就派上用场了!

创建github项目

在github整个界面的右上角的加号,选择【create new repository】创建一个新的github仓库,以下是一些创建仓库时的选项。

在这里插入图片描述

创建好之后你的仓库图如下:

在这里插入图片描述

虽然其中只有一个自动生成的README文件,但是它已经是一个完整的仓库了,可以正常使用包括clone等命令。

README文件可以理解为是这个项目的说明书,这个文件中的内容应该包括如何部署和调整运行整个项目,该文件使用markdown语法进行编写,和写博客一样,在正式的项目中,README文件非常重要,应该精心书写。

向github提交项目

SSH

为了防止随意提交造成的混乱,提交代码之前一定是需要某种授权的,而 GitHub 上一般都是基于 SSH 授权的。SSH是一种网络协议,用于计算机之间的加密登录。目前是每一台 Linux 电脑的标准配置。在安装了git之后,Windows系统也有SSH服务,而大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置。

SSHkey

在安装完git后应该会自动安装好SSH服务,可以在git bash(命令行)中输入ssh查看,如果没有显示下面的内容可以自己安装一下ssh服务。

在这里插入图片描述

输入命令ssh-keygen -t rsa指定rsa算法生成密钥,然后连续三个回车(不要进行输入),在Windows系统目录/c/用户/用户名/.ssh(隐藏文件)下面就会看到两个文件id_rsa 和id_rsa.pub ,而 id_rsa 是密钥,id_rsa.pub 就是公钥。

github上面添加ssh key

在github中,点击右上角头像的settings,在设置中选择【SSH and GPG keys】,选择【New SSH Key】添加一个新的SSH Key

在这里插入图片描述

然后把id_sra.pub(记事本打开)公钥中的内容给粘贴进去即可

在这里插入图片描述

在这一步可以不设置ssh的Title,github会根据公钥中的内容自动识别用户名并将其作为Title

在设置完ssh之后,使用ssh -T git@github.com 命令测试是否配置成功

在这里插入图片描述

PUSH & PULL

push直译过来就是「推」的意思,如果你本地代码有更新了,那么就需要把本地代码推到远程仓库,这样本地仓库跟远程仓库就可以保持同步了。

【示例】把本地代码推到远程仓库mian分支

git push origin mian

pull直译过来就是「拉」的意思,如果别人提交代码到远程仓库,这个时候你需要把远程仓库的最新代码拉下来,然后保证两端代码的同步。

【示例】把远程仓库mian分支中的代码拉到本地

git pull origin mian

一般我们在push之前都会先pull ,这样不容易冲突。

克隆和提交代码

添加 SSH key 成功之后,就可以实现克隆项目和代码的提交

克隆项目

我们之前在github上面创建了一个test项目,现在让我们用clone命令将其克隆到本地,让我们再创建一个空文件,不需要init(初始化),直接使用clone命令git clone https://github.com/dao-ca-ren/test.git

在这里插入图片描述

打开repository右上角的code就可以找到对应的仓库地址

在这里插入图片描述

克隆之后,原本的空文件夹就变成了一个git仓库,其中有我们远程仓库中的内容,此时的这个本地仓库就和远程仓库绑定好了,修改完本地的内容后进行commit之后,就可以直接使用push将修改内容推到远程仓库中。

绑定远程仓库

如果我们本地已经建立好一个仓库,上面的方法就不适合使用了,此时需要将本地仓库和远程仓库建立关联之后在进行push才行。

git remote add origin https://github.com/dao-ca-ren/test.git

在本地仓库中,运行上述命令绑定远程仓库,其地址为https://github.com/dao-ca-ren/test.git,origin为给远程仓库起的名字,因为一个复杂的项目可能会有多个远程仓库,这时候就需要我们使用名字进行区分。

查看当前项目有哪些远程仓库:

git remote -v

在这里插入图片描述

上述的fetch和push是两种不同的操作,后续为你详细介绍

现在我们再来看一遍push操作,其中的命令含义我们就都懂了

git push origin mian

把当前本地目录的改动,推到origin远程仓库的mian分支

fetch

在Git中,fetch 命令用于从远程仓库下载数据并将其合并到本地仓库中,但不会自动合并这些更改。它将远程分支的快照复制到你的本地仓库中,作为远程跟踪分支。这样你可以在之后选择性的将这些更改合并到你的工作分支中。

基本用法

1. Fetch所有远程仓库的更改
git fetch
2. Fetch特定远程仓库的所有更改
git fetch <remote_name>

其中 <remote_name> 是你想要从其获取更新的远程仓库的名称。例如,如果你的远程仓库名为 origin,则命令为:

git fetch origin
3. Fetch特定远程仓库的特定分支
git fetch <remote_name> <branch_name>

这会将远程分支的最新状态拉取到本地。例如,拉取 origin 远程仓库中的 main 分支:

git fetch origin main

查看远程分支

使用 fetch 后,你可以查看远程分支的状态:

git branch -r

合并远程分支到当前分支

如果你想将远程分支的更改合并到你的当前分支,可以使用以下命令:

git merge <remote_name>/<branch_name>

例如,将 origin/main 合并到当前分支:

git merge origin/main

注意事项

  • 在执行 fetch 命令之前,最好先确认你的工作目录是干净的,没有未提交的更改。
  • 如果你只是想同步远程仓库的最新状态而不立即合并更改,那么使用 fetch 而不是 pull 更为合适。
  • 使用 fetchmerge 可以让你更细粒度地控制合并流程,避免不必要的冲突。
  • fetch 不会改变你的工作树或当前 HEAD 的位置。

整个本地仓库加上远程仓库的命令和流程如下图所示

在这里插入图片描述

相关文章:

【Git】(基础篇四)—— GitHub使用

GitHub使用 经过上一篇的文章&#xff0c;相信大家已经对git的基本操作熟悉了&#xff0c;但哪些使用git的方法只是在本地仓库进行&#xff0c;本文介绍如何使用git和远程仓库进行连接使用。 Github和Gitee 主要用到的两个远程仓库在线平台是github和gitee GitHub GitHub …...

【Qt+opencv】基础的图像绘制

文章目录 前言line函数ellipse函数rectangle函数circle函数fillPoly函数putText函数总结 前言 在计算机视觉和图像处理领域&#xff0c;OpenCV是一个强大的库&#xff0c;提供了丰富的功能和算法。而Qt是一个跨平台的C图形用户界面应用程序开发框架&#xff0c;它为开发者提供…...

使用Nginx OpenResty与Redis实现高效IP黑白名单管理

1、引言 在当今数字化时代&#xff0c;网络安全已成为企业和个人用户关注的焦点。IP黑白名单作为一种有效的网络安全策略&#xff0c;允许我们精确控制对Web资源的访问权限。通过白名单&#xff0c;我们可以确保只有可信的IP地址能够访问敏感资源&#xff1b;而黑名单则可以阻…...

EasyExcel导入导出数据类型转换

前言&#xff1a; 1、基本数据类型转换&#xff1a;当前原始的数据类型是interger类型&#xff0c;需要在导出时将其映射为对应的字符串&#xff0c;并且导入时可以将字符串重新映射为interger类型。 2、时间格式转换&#xff1a;数据从数据库中获取的类型为LocalDate类型&…...

stm32入门-----EXTI外部中断(下——实践篇)

目录 前言 一、硬件介绍 1.对射红外线传感器 2.旋转编码器 二、EXTI外部中断C编程 1.开启RCC时钟 2.配置GPIOK口初始化 3.配置AFIO 4.配置EXIT 5.配置NVIC 三、EXIT外部中断项目实操 1.对射红外传感器计数 2.选择编码器计数 前言 本期接着上一期的内容继续学习stm3…...

深度学习落地实战:基于UNet实现血管瘤超声图像分割

前言 大家好,我是机长 本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代码与数据集。可通过百度云盘进行获取,实现开箱即用 …...

Python进阶(4)--正则表达式

正则表达式 在Python中&#xff0c;正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是一种强大的文本处理工具&#xff0c;它允许你使用一种特殊的语法来匹配、查找、替换字符串中的文本。 在这之前&#xff0c;还记得之前我们是通过什么方法分割…...

RCA连接器是什么?一文读懂

RCA连接器&#xff0c;也就是我们在电视机、DVD播放器、通讯设备、立体声设备和游戏设备后面常见的彩色插头&#xff0c;其历史可以追溯到近一个世纪以前。这种现今广泛使用的电缆接口&#xff0c;最初是由美国无线电公司&#xff08;RCA&#xff09;开发并命名的&#xff0c;在…...

【linux】服务器安装NVIDIA驱动

【linux】服务器安装NVIDIA驱动 【创作不易&#xff0c;求点赞关注收藏】&#x1f600; 文章目录 【linux】服务器安装NVIDIA驱动一、关闭系统自带驱动nouveau二、下载英伟达驱动三、安装英伟达驱动1、禁用X服务器和相关进程2、在TTY终端安装驱动3、验证是否安装成功4、重新启…...

【达梦数据库】关于用户、模式、表空间等如何理解?

与MySQL的用户有所区别&#xff0c;MySQL是单实例多库&#xff0c;DM7以上版本是单库多实例架构&#xff0c; MySQL访问方式&#xff1a; 一个root访问多个库&#xff0c;访问前切换一下就ok 比如MySQL到DM的迁移是&#xff0c;MySQL的一个库对应dm中的一个表空间和一个用户。比…...

一篇就够mysql高阶知识总结

一、事务的ACID原则 序号原则说明1原子性&#xff08;Atomicity&#xff09;事务是数据库的逻辑工作单位&#xff0c;事务中包括的诸操作要么都做&#xff0c;要么都不做2一致性&#xff08;Consistency&#xff09;事务执行的结果必须是使数据库从一个一致性状态变到另一个一…...

CTF-Web习题:[BJDCTF2020]ZJCTF,不过如此

题目链接&#xff1a;[BJDCTF2020]ZJCTF&#xff0c;不过如此 解题思路 访问靶场链接&#xff0c;出现的是一段php源码&#xff0c;接下来做一下代码审阅&#xff0c;发现这是一道涉及文件包含的题 主要PHP代码语义&#xff1a; file_get_contents($text,r); 把$text变量所…...

【IEEE出版】第四届能源工程与电力系统国际学术会议(EEPS 2024)

第四届能源工程与电力系统国际学术会议&#xff08;EEPS 2024&#xff09; 2024 4th International Conference on Energy Engineering and Power Systems 重要信息 大会官网&#xff1a;www.iceeps.com 大会时间&#xff1a;2024年8月9-11日 大会…...

浅谈Vue:text-align: center、align-items: center、justify-content: center三种居中的区别和用法

text-align: center、align-items: center 和 justify-content: center 是用于不同布局场景下的CSS属性。它们在水平和垂直居中元素方面有所不同&#xff0c;具体取决于你使用的布局模型&#xff08;如块级元素、Flexbox、Grid&#xff09;。以下是它们的区别和适用场景&#x…...

理解UI设计:UI设计师的未来发展机遇

UI设计师的出现是互联网时代的设计变革。随着移动互联网的快速发展&#xff0c;移动产品设计师非常短缺。高薪资让许多其他行业的设计师已经转向了UI设计。那么什么是UI设计呢&#xff1f;UI设计师负责什么&#xff1f;UI设计的发展趋势和就业前景如何&#xff1f;这些都是许多…...

关键字 internal

在C#中&#xff0c;internal 关键字是一个访问修饰符&#xff0c;它用于限制类型或类型成员的访问性。当一个类型&#xff08;类、结构体、接口、枚举等&#xff09;或类型成员&#xff08;字段、属性、方法、事件等&#xff09;被声明为 internal 时&#xff0c;它只能在同一程…...

C学习(数据结构)-->单链表习题

目录 一、环形链表 题一&#xff1a;环形链表 思路&#xff1a; 思考一&#xff1a;为什么&#xff1f; 思考二&#xff1a;快指针一次走3步、4步、......n步&#xff0c;能否相遇 step1&#xff1a; step2&#xff1a; 代码&#xff1a; 题二&#xff1a; 环形链表 I…...

MATLAB6:M文件和控制流

文章目录 一、实验目的二、实验内容三、仿真结果四、实践中遇到的问题及解决方法 一、实验目的 1. 熟悉运用MATLAB的控制指令。   2. 理解M脚本文件和函数文件的本质区别。   3. 能够运用所学知识&#xff0c;编制程序解决一般的计算问题。 二、实验内容 1.for循环结构及注…...

网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术

网页数据抓取&#xff1a;融合BeautifulSoup和Scrapy的高级爬虫技术 在当今的大数据时代&#xff0c;网络爬虫技术已经成为获取信息的重要手段之一。Python凭借其强大的库支持&#xff0c;成为了进行网页数据抓取的首选语言。在众多的爬虫库中&#xff0c;BeautifulSoup和Scrap…...

Linux应用——网络基础

一、网络结构模型 1.1C/S结构 C/S结构——服务器与客户机&#xff1b; CS结构通常采用两层结构&#xff0c;服务器负责数据的管理&#xff0c;客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器&#xff0c;服务器则是提供信息供人访问的计算机。 例如&…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...