【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 的位置。

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

在这里插入图片描述

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

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

相关文章

【ARMv8/v9 GIC- 700 系列 2 -- GIC-700 上电控制寄存器 GICR_PWRR】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC-700 上电GICR_PWRR 寄存器字段介绍GICR_PWRR 功能说明GICR_PWER 代码配置GICR_PWRR 使用场景GICR_PWRR 注意事项GIC-700 上电 GICR_PWRR(功耗寄存器)是ARM GICv4架构中用于控制GIC-700是否可以关闭电源的寄存器。它通过几个位…

用DrissionPage过某里滑块分析

最近我又在找工作了&#xff0c;悲哀啊~&#xff0c;面试官给了一道题&#xff0c;要求如下&#xff1a; 爬虫机试&#xff1a;https://detail.1688.com/offer/643272204627.html 过该链接的滑动验证码&#xff0c;拿到正确的商品信息页html&#xff0c;提取出商品维度的信息&a…

7月18日学习打卡,数据结构堆

hello大家好呀&#xff0c;本博客目的在于记录暑假学习打卡&#xff0c;后续会整理成一个专栏&#xff0c;主要打算在暑假学习完数据结构&#xff0c;因此会发一些相关的数据结构实现的博客和一些刷的题&#xff0c;个人学习使用&#xff0c;也希望大家多多支持&#xff0c;有不…

SpringMVC的底层工作原理?

1.用户发送请求至前端控制器DispatcherServlet. 2.DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器 3.HandlerMapping找到具体的处理器(可以根据 xml 配置、注解进行查找&#xff09;&#xff0c;生成处理器及处理器拦截器(如果有则生成)一并返回给DispatcherSe…

B2BUA介绍

B2BUA介绍 B2BUA&#xff08;Back-to-Back User Agent&#xff0c;背靠背用户代理&#xff09;是通讯网络中&#xff0c;使用SIP&#xff08;Session Initiation Protocol&#xff0c;会话发起协议&#xff09;实现会话的一种逻辑实体。B2BUA作为SIP呼叫两端的用户代理&#xf…

Spring MVC-什么是Spring MVC?

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 文章目录 1.MVC定义2. Spring MVC 官方对于Spring Web MVC的描述这样的: Spring Web MVC is the original web framework built on the Servlet APl and has been includedin the Spring Frame…

科技论文在线--适合练习期刊写作和快速发表科技成果论文投稿网站

中国科技论文在线这个平台可以作为练手的一个渠道&#xff0c;至少可以锻炼一下中文写作&#xff0c;或者写一些科研方向的简单综述性文章。当然&#xff0c;如果你的老师期末要求也是交一份科技论文在线的刊载证明的话&#xff0c;这篇文章可以给你提供一些经验。 中国科技论…

PyCharm软件初始化配置

安装完pycharm后&#xff0c;需要对其进行个性化设置&#xff0c;分别设置方法如下 目录 一、修改主题二、修改默认字体和大小三、设置拖动滚轮改变字体大小四、常见快捷键 一、修改主题 1、界面右上角点击红框的内容 2、选择Theme选项 3、选择对应的主题 第一二个是白色主题…

Java中的JDK、JRE、JVM

JDK&#xff08;Java Development kit&#xff09;&#xff1a;Java开发工具包 JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a;Java虚拟机&#xff0c;真正运行Java程序的地方 核心类库&#xff1a;Java已经写好的东西&#xff0c;可以直接用 开发工具&#xff…

RK3568平台(环境篇)windon与ubuntu之间文件互传

一.windon与ubuntu共享文件夹 打开设置&#xff1a; 点击选项&#xff0c;共享文件夹 共享文件夹&#xff0c;就是在电脑的固定盘符下面&#xff0c;找一个文件夹为Windows和Linux都能看得见的共用的看得见的文件夹&#xff0c;点击添加文件夹。 点击确定后在ubuntu添加共享文…

【Linux】Linux环境设置环境变量操作步骤

Linux环境设置环境变量操作步骤 在一些开发过程中本地调试经常需要依赖环境变量的参数&#xff0c;但是怎么设置对小白来说有点困难&#xff0c;今天就介绍下具体的操作步骤&#xff0c;跟着实战去学习&#xff0c;更好的检验自己的技术水平&#xff0c;做技术还是那句话&…

Java 网络编程(TCP编程 和 UDP编程)

1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09; 文章目录 1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09;2. 网络编程的概念3. IP 地址3.1 IP地址相关的&#xff1a;域名与DNS 4. 端口号&#xff08;port&#xff09;5. 通信协议5.1 通信协议相关的…

memcached 高性能内存对象缓存

memcached 高性能内存对象缓存 memcache是一款开源的高性能分布式内存对象缓存系统&#xff0c;常用于做大型动态web服务器的中间件缓存。 mamcached做web服务的中间缓存示意图 当web服务器接收到请求需要处理动态页面元素时&#xff0c;通常要去数据库调用数据&#xff0c;但…

Adobe国际认证详解-影视后期

在当今的数字媒体时代&#xff0c;影视后期制作作为创意产业的核心环节&#xff0c;对于专业技能的要求日益提高。Adobe国际认证&#xff0c;作为全球创意设计领域的重要标杆&#xff0c;为影视后期制作人员提供了一个展示自我、提升技能的国际舞台。 何为影视后期&#xff1f;…

Bean的注解开发

目录 注解定义bean 在实现类使用注解Component 注意Spring提供了Component注解的三个衍生注解 纯注解开发 bean管理 bean的作用范围 bean的生命周期 bean的依赖注入 引用类型的注入 如果有两个实现类呢&#xff08;即有两个相同变量类型的bean&#xff09;&#xff0c…

maven内网依赖包编译报错问题的一种解决方法

背景 外网开发时可以连接互联网&#xff0c;所以编译没有什么问题&#xff0c;但是将数据库、代码、maven仓库全部拷贝到内网&#xff0c;搭建内网环境之后&#xff0c;编译失败。 此依赖包的依赖层级图 maven镜像库配置使用拷贝到内网的本地库&#xff0c;配置如下&#xff…

从操作系统层面认识Linux

描述进程-PCB Linux操作系统下的PCB是: task_struct https://www.cnblogs.com/tongyan2/p/5544887.htmlhttps://www.cnblogs.com/tongyan2/p/5544887.html校招必背操作系统面试题-什么是 PCB&#xff08;进程控制块&#xff09; &#xff1f;_哔哩哔哩_bilibili校招必背操作系…

FOG Project 文件名命令注入漏洞复现(CVE-2024-39914)

0x01 产品简介 FOG是一个开源的计算机镜像解决方案,旨在帮助管理员轻松地部署、维护和克隆大量计算机。FOG Project 提供了一套功能强大的工具,使用户能够快速部署操作系统、软件和配置设置到多台计算机上,从而节省时间和精力。该项目支持基于网络的 PXE 启动、镜像创建和还…

应用层——HTTP

像我们电脑和手机使用的应用软件就是在应用层写的&#xff0c;当我们的数据需要传输的时候换将数据传递到传输层。 应用层专门给用户提供应用功能&#xff0c;比如HTTP,FTP… 我们程序员写的一个个解决我们实际的问题都在应用层&#xff0c;我们今天来聊一聊HTTP。 协议 协议…

配置SMTP服务器的要点是什么?有哪些限制?

配置SMTP服务器安全性如何保障&#xff1f;如何高效配置服务器&#xff1f; SMTP作为电子邮件发送的核心协议&#xff0c;其配置对于确保邮件的成功传递和安全至关重要。AokSend将详细介绍配置SMTP服务器的关键要点&#xff0c;帮助读者建立一个高效、安全的邮件发送系统。 配…