Githubs的使用方法(创建仓库\分支\提交【增删改查】\拉取与合并\管理与clone代码\修改分支等操作)

news2024/11/24 14:36:31

Githubs的使用方法

一、github基本使用

这一小节主要介绍github的基本使用方法以及每一步的流程和作用。

1. 创建仓库

在这里插入图片描述

2. 创建分支

在这里插入图片描述
在这里插入图片描述

此时有两个分支:main 和 readme-edits。 现在,它们看起来完全相同。 接下来,将向新分支添加更改。

3. 创建和提交更改

在上一步中创建新分支时, GitHub 会将您带到作为 main 副本的新 readme-edits 分支的代码页。

您可以对存储库中的文件进行更改并保存更改。 在 GitHub 上,保存的更改称为提交。 每个提交都有一个关联的提交消息,该消息是解释为什么进行特定更改的说明。 提交消息会捕获您更改的历史记录,以便其他参与者可以了解您执行了哪些操作及其原因。
在这里插入图片描述

4. 打开拉取请求

现在,您在 main 以外的分支中进行了更改,可以打开拉取请求。

拉取请求是 GitHub 上协作的核心。 打开拉取请求后,可以提出更改,要求某人审查和提取您的贡献并将其合并到其分支中。 拉取请求显示两个分支中内容的差异。 变化、增减以不同的颜色显示。

只要进行提交,便可打开拉取请求并开始讨论,即使在代码完成之前亦可。

通过在拉取请求消息中使用 GitHub 的 @提及功能,您可以向特定人员或团队请求反馈,无论他们近在大厅还是远在 10 个时区之外。

您甚至可以在自己的存储库中打开拉取请求并自行合并。 这是在处理大型项目之前了解 GitHub 流程的好方法。

在这里插入图片描述

您的协作者现在可以查看您的编辑内容并提出建议。

5. 合并拉取请求

在最后一步中,您将 readme-edits 分支合并到 main 分支中。 合并拉取请求后,readme-edits 分支上的更改将合并到 main。

有时,拉取请求可能会引入与 main 上现有代码冲突的代码更改。 如果存在任何冲突, GitHub 将提醒您有关冲突代码的信息,并防止合并,直到冲突解决为止。 您可以进行解决冲突的提交,也可以使用拉取请求中的注释与团队成员讨论冲突。

在本演练中,应该没有任何冲突,因此您已准备好将分支合并到主分支中。

在这里插入图片描述

二、通过git命令使用github

在github上创建好仓库后进行以下操作:

1.把需要上传的文件夹变成git可管理的文件,在需要上传的文件夹路径下输入以下:

git init

2.将本地文件添加到暂存区

git add .

3.将暂存区文件提交到分支(master):

git commit -m'对修改过的代码的描述'

4.为将要上传的版本打一个tag,方便后来下载不同版本的代码:

git tag tag名称
# 这里的tag名称最好是分支名称和版本号的组合

4.添加你要上传到的远程仓库:

git remote add origin 仓库地址
# 仓库地址为:git.com:xxx/xxx.git

5.切换分支 (可选,如果不切换分支的话就默认上传到main/master分支上)

git cheekout -b 分支名字
# 如果是存在的分支,想要切换的话直接git checkout 分支名字即可
# 如果是不存在的分支,则git checkout -b 分支名字就可以创建新分支并切换到新分支上

6.将本地本版本号的文件上传到远端仓库的指定分支:

git push origin 分支名字 tag名称

此时,如果报错
在这里插入图片描述

就说明你的SSH key没有添加到github帐号设置中,这时需要在本地创建SSH key,然后将生成的SSH key文件内容添加到github帐号上去。

创建SSH key的方法很简单,生成ssh key的过程如下所示:

ssh-keygen -t rsa -C "your_email"

然后系统提示输入文件保存位置等信息,连续敲三次回车即可,生成的SSH key文件保存在中~/.ssh/id_rsa.pub文件中。

在linux下可以用cat命令显示id_rsa.pub中的内容:

cat  ~/.ssh/id_rsa.pub

接着拷贝.ssh/id_rsa.pub文件内的所有内容,将它粘帖到github帐号管理中的添加SSH key界面中。

在这里插入图片描述
在这里插入图片描述

在团队协作使用git的过程中,一般会禁用直接提交master分支的权限。正常操作应该是,在新建分支上进行处理,然后提交一个request,请求合并,也就是常说的PR(Pull Request)。

上传新的版本后就可以进行版本的管理等操作,比如上一小节介绍的拉取请求、解决冲突、合并拉取请求等操作。

查看历史版本的操作如下:
在这里插入图片描述

然后就可以看到历史版本,每一个版本分别做了什么样的修改,所以在git commit -m "修改内容部分"要好好填写修改的内容:
在这里插入图片描述

三、从GitHub上指定分支clone代码

如果是从master/main分支clone代码,则:

git clone 仓库地址
# 仓库地址为:git.com:xxx/xxx.git

如果想从指定分支clone代码,则

git clone -b 分支名称/tag名称 (--depth=1) 仓库地址
# 仓库地址为:git.com:xxx/xxx.git
# depth 表示克隆深度, 1 表示只克隆最新的版本. 因为如果项目迭代的版本很多, 克隆会很慢

如果想下载历史版本(历史版本没有历史版本号),就可以先git clone,然后从commits找到对应版本的SHA并复制SHA,然后cd到刚下载的代码目录,git checkout SHA,当前目录的代码就变成了该版本。也可以直接通过历史版本进行下载。

当给一个版本打上版本号后,如果这个版本被merge到了master分支,可以通过版本号下载这个版本。

四、本地分支和远程分支之间的一些操作

Git的分支实际上是一个指向某个版本的指针,对分支的增删改操作就相当于对指针的增删改,因此十分快速轻量。

本地分支就是本地Git仓库里的一个指针,指向某个提交。

远程分支是远程仓库里的一个指针,指向远程仓库中的某个提交。

4.1 常用操作

新建一个本地分支feature1。即在当前版本上新建一个分支,也就是新增一个指向当前版本的指针:

git branch feature1

切换到feature1分支。改变HEAD的指向至对应的分支;HEAD是git中一个特殊的指针,它永远指向本地的当前活跃分支,因此在本地切换分支就相当于改变HEAD的指向:

git checkout feature1

新建并切换到分支feature1,操作1和2可以合并成一个步骤:

git checkout -b feature1

还可以将feature1推送到远程:

git push origin feature1

这样远程就会新增一个名为feature1的分支,并且本地的feature1会自动跟踪远程的feature1。
如果不想让远程的分支也命名为feature1:

git push origin feature1:feature1_o

这个命令意为将本地的feature1分支,推送到远程,在远程的分支名为feature1_o,并跟踪之

可以发现上个命令其实是git push origin feature1:feature1的简化

合并分支。在feature1上做了一些修改提交后,还可以将提交merge到主分支:

git checkout master  // 先将当前分支切换为master
git merge feature1 // 再将feature1合并进当前分支

合并feature1上的提交后,如果想将这些提交同步到远程的master,则可以执行 git push origin master将本地合并的提交推送到远程。

在feature1分支合并后,还可以再删除分支feature1:

git branch -d feature1

如果未执行合并便删除分支,git会提示错误error:分支’feature1’ 没有完全合并,如确定要删除,可使用-D强制删除:

git branch -D feature1

同样也可以删除远程分支:

git push origin :feature1_o

这里其实运用了个小技巧,将本地的“空”推送到远程的feature1_o分支,也就是删除了远程feature1_o分支。
也可以使用以下这个命令来删除:

git push origin --delete 分支名称

4.2 git修改远程仓库地址

1、直接修改远程仓库地址

查看远程仓库地址

git remote -v

修改远程仓库地址:

git remote set-url origin [url]

2、先删除再修改地址

git remote rm origin
git remote add origin [url]

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

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

相关文章

Vue3 项目实例(一)ElementPlus+ pinia+vite创建

项目搭建 热重载:将一个项目切分成多个JS,同时利用浏览器的协商缓存。 etag: 文件唯一标识 如果某一片代码没有改变,devServer返回304,浏览器继续使用原来的文件,否则,返回200,响应新的js文件…

RK3568平台开发系列讲解(调试篇)IS_ERR函数的使用

🚀返回专栏总目录 文章目录 一、IS_ERR函数用法二、IS_ERR函数三、内核错误码沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 IS_ERR 函数的使用。 一、IS_ERR函数用法 先看下用法: 二、IS_ERR函数 对于任何一个指针来说,必然存在三种情况: 一种是合…

知识图谱:Neo4j数据库的基本使用——创建张学良的关系谱

一、知识图谱及Neo4j数据库介绍 知识图谱(Knowledge Graph)是人工智能的重要分支技术,它在2012年由谷歌提出,是结构化的语义知识库,用于以符号形式描述物理世界中的概念及其相互关系,其基本组成单位是“实体…

4.1派生类的概念

:为什么使用继承 所谓继承就是从先辈处得到属性和行为特征。类的继承就是新的类从已有类那里得到已有特征。这样做的目的是:减少代码的重复。 派生类的声明 声明派生类的一般公式 : class 派生类名:[继承方式] 基类名 { 派生类新增的数据成…

Java并发基石_CAS原理实战02_CAS实现原理

文章目录什么是CAS?CAS的实现原理是什么?cmpxchg指令怎么保证多核心下的线程安全?什么是ABA问题?如何解决ABA问题呢?什么是CAS? CAS,全称CompareAndSwap,比较并替换。 CAS包含了三个…

MyBatis --- 缓存、逆向工程、分页插件

一、MyBatis的缓存 1.1、MyBatis的一级缓存 一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问 使一级缓存失效的四种情况: 1、…

MySQL高级第十二篇:数据库事物概述和隔离级别

MySQL高级第十二篇:数据库事物概述和隔离级别一、数据库事物概述1. SHOW ENGINES 查看存储引擎2. 事物ACID特性原子性(atomiity)一致性(consistency):隔离性(isolation)持久性&#…

使用java实现自动扫雷

写在前面 本项目已在github开源,链接https://github.com/QZero233/JavaAutoMinesweeper 本文的写作风格可能会有些奇怪,这是笔者的一次全新的尝试,后续会换回写blog的文风的 摘要 本文提出了一个全自动完成扫雷游戏的解决方案,…

【Kubernetes】 多云管理策略解析

文章目录Kubernetes 多云的实现1. 前言1.1 Kubernetes 多云的现实需求2. Kubernetes 多云的架构设计2.1 跨云 Kubernetes 的挑战2.1.1 不同云厂商的接口不兼容2.1.2 多云环境中的安全问题2.1.3 跨云环境中的网络问题2.2 Kubernetes 多云的架构设计2.2.1 统一网络管理2.2.2 使用…

新能源汽车高压配电管理(PDU/BDU)

一、概念与组成 PDU(Power Distribution Unit),即高压配电单元,功能是负责新能源车高压系统中的电源分配与管理,为整车提供充放电控制、高压部件上电控制、电路过载短路保护、高压采样、低压控制等功能,保护和监控高压系统的运行…

MacOS系统启动React前端项目时报错Error: EMFILE: too many open files, open解决方法

错误场景 最近在开发React的前端微应用,启动时模块构建报错Module build failed, Error: EMFILE: too many open files, 如下图所示: Error: EMFILE: too many open files的错误,经排查是因为单个微应用项目较大,发…

【Linux安装数据库】Ubuntu安装mysql并连接navicat

Linux系统部署Django项目 文章目录Linux系统部署Django项目一、mysql安装二、mysql配置文件三、新建数据库和用户四、nivacat链接mysql一、mysql安装 linux安装mysql数据库有很多教程,根据安装方式不同,相关的步骤也不同。可以参考:【Linux安…

前端基础(HTML、CSS、JS、jQuery)

文章目录一、HTML基础1.1 常用标签(表格、表单、按钮等)1.2 其他一些标签(书签、显示效果、缩写等)二、CSS基础2.1 CSS引入方式2.2 CSS选择器2.3 CSS常用属性三、JavaScript3.1 JS使用方式3.2 变量和数据类型3.3 函数、作用域、条…

Unity基础框架从0到1(五)延时任务调度模块

索引 这是Unity基础框架从0到1的第五篇文章,前面的文章和对应的视频我一起列到这里: 文章 Unity基础框架从0到1 开篇 Unity游戏框架从0到1 (二) 单例模块 Unity基础框架从0到1(三)高效的全局消息系统 Unity基础框架从0到1&a…

CentOS 7 DNS服务器架设

CentOS 7 DNS服务器部署 项目背景和要求 要保证即能够解析内网域名linuxidc.local的解析,又能解析互联网的域名。 主DNS服务器:ZZYH1.LINUXIDC.LOCAL 辅助DNS服务器:ZZYH2.LINUXIDC.LOCAL 包含以下域的信息: 1、linuxidc.lo…

mybatis多表联查(一对一、一对多/多对一、多对多)

mybatis多表联查(一对一、一对多/多对一、多对多) 在开发过程中单表查询往往不能满足需求分析的很多功能,对于比较复杂业务来说,关联的表有几个,甚至是几十个并且表与表之间的关联相当复杂。为了能够实现复杂的功能业务,就必须进…

Java 并发工具合集 JUC 大爆发!!!

并发工具类 通常我们所说的并发包也就是 java.util.concurrent (JUC),集中了 Java 并发的各种工具类, 合理地使用它们能帮忙我们快速地完成功能 。 1. CountDownLatch CountDownLatch 是一个同步计数器,初始化的时候 传入需要计数的线程等待数…

Monaco Editor编辑器教程(二七):集成多个GitLab编辑器颜色样式主题

前言 在开发编辑器时,未来满足开发者的审美需求,有时需要设计多套颜色主题,最基础的是黑色主题和白色主题。如果用户愿意出钱的话,可以加上一些其他花里胡哨的颜色主题,在vscode中是可以搜到。今天就来教大家一些,如何借助现成的资源来为自己的monaco编辑器增加丰富的颜…

JavaScript控制语句及搭建前端服务器

目录 一、for in 二、for of 三、try catch 四、搭建前端服务器 (1)安装nvm (2)检查npm (3)搭建前端服务器 一、for in 主要用来遍历对象 let father {name:张三, age:18, study:function(){}};f…

Linux常用的网络命令有哪些?快速入门!

在Linux系统中,有许多常用的网络命令可以用来进行网络配置和故障排除。这些命令可以帮助我们了解网络的状态和性能,并且可以快速诊断和解决网络问题。在本文中,我们将介绍一些常用的Linux网络命令,并提供一些案例来帮助您更好地理…