Git 和 Github 的使用
补充内容:EasyHPC - Git入门教程【笔记】
文章目录
- 常用命令
- 配置信息
- 分支管理
- 管理仓库
- 概念理解
- SSH 密钥
- HTTPS 和 SSH 的区别
- 在本地生成 SSH key
- 在 Github 上添加 SSH key
- 使用的例子
- 同步本地仓库的修改到远程仓库
- 拉取远程仓库的修改到本地仓库
- 拉取远程仓库的分支并修改提交
- 将本地分支提交到不同的远程分支
- 将本地分支提交到不同的本地分支
- 参考
常用命令
配置信息
git config --global user.name "用户名" # 配置用户名
git config --global user.email "邮箱" # 配置邮箱地址
git config -l # 查看配置信息
分支管理
git branch # 显示本地仓库中的分支列表,当前的分支前会有一个星号标记。
git branch -r # 显示远程仓库中的分支列表。
git branch -a # 显示本地和远程仓库中的所有分支列表。
git branch <name> # 创建分支
git checkout <name> # 切换分支
管理仓库
git init # 初始化 git 仓库
git clone <repo> # 从 git 仓库中克隆项目
git status # 查看 git 当前状态
git status -s # 查看简易信息
git diff # 查看 git status 的详细信息
git add . # 将添加的文件或修改的文件加入本地的缓存区
git commit -m '注释' # 将缓存区内容添加到仓库中
git commit -am '注释' # 跳过 add 过程
git pull # 拉取 master 分支上的最新代码
git pull origin A # 拉取指定分支上的最新代码
概念理解
- 分支(branch)是用于在同一代码库中并行开发和维护不同功能的独立版本。
- 分叉(fork)是用于在开源项目中个人修改和贡献的方式,将主仓库的代码复制到自己的仓库中进行开发。
- 获取(fetch)用于将远程仓库的修改下载到本地,但不进行合并。
- 合并(merge)用于将远程仓库的修改与本地分支进行合并。
- 变基(rebase)用于将一系列提交应用于另一个分支,并整理提交历史。
- 克隆(clone)用于从远程仓库创建本地仓库的完整复制。
对分支(branch)和分叉(fork)的个人理解:去别人的开源仓库,把项目 fork 到自己的仓库,在自己的仓库里创建 branch 开发新的功能。
SSH 密钥
HTTPS 和 SSH 的区别
-
HTTPS 可以随意克隆 Github 上的项目,而不管是谁的;而 SSH 则是,你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key,否则无法克隆。
-
HTTPS 在 push 的时候是需要验证用户名和密码的;而 SSH 在 push 的时候,是不需要输入用户名的,如果配置 SSH key 的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。
在本地生成 SSH key
查看本地是否有已经生成好的 ssh key:
cat ~/.ssh/id_rsa.pub
若有,则先删除:
cd ~
rm -rf .ssh
重新生成 ssh key:
ssh-keygen -t rsa -C "邮箱"
代码参数含义:
t
指定密钥类型,默认是 rsa ,可以省略。C
设置注释文字,比如邮箱。f
指定密钥文件存储文件名。
接着,连续按回车。
在.ssh目录下得到了两个文件:id_rsa(生成的私钥)和 id_rsa.pub(生成的公钥)。
查看新生成的 ssh key:
cat ~/.ssh/id_rsa.pub
在 Github 上添加 SSH key
登录GitHub,点头像,点Settings,点SSH and GPG keys,点New SSH key,输入Title和Key。
Title 可以自定义,Key 就是
cat ~/.ssh/id_rsa.pub
输出的内容。
点击 Add SSH key。
测试是否设置成功:
ssh -T git@github.com
设置成功后,即可不需要账号密码 clone 和 push 代码。
使用的例子
随便找了一个开源项目,fork 一份。
在本地 clone 一份:
git clone git@github.com:zhulu506/demo.git
同步本地仓库的修改到远程仓库
在本地的 demo 项目里新建一个 .txt 文件,提交更改:
cd demo/ # 进入 demo 项目
echo "hello world" > new.txt # 新建一个 .txt 文件
git add new.txt # 添加跟踪
git commit -m 'add new.txt' # 提交到本地仓库
git push # 将本地提交同步到远程仓库
拉取远程仓库的修改到本地仓库
直接在 Github 网页上修改 .txt 文件。
从远程仓库拉取更新并合并到当前分支:
git pull
git pull
相当于先运行 git fetch
获取远程更新,再运行 git merge
合并更新到当前分支。
拉取远程仓库的分支并修改提交
情况:拉取远程仓库后,在远程仓库创建了新的分支 v1。
# 最初在本地分支 master
git pull # 拉取 master 分支上的最新代码
git checkout v1 # 切换到分支 v1,跟踪远程分支 v1
touch new_file # 修改动作
git add .
git commit -m 'add new_file'
git push
将本地分支提交到不同的远程分支
情况:远程仓库存在分支 v2,将本地分支 v1 的更改提交到 v2。
# 最初在本地分支 v1
git pull
touch new_file
git add .
git commit -m 'add new_file'
git push origin v1:v2
将本地分支推送到不同远程分支:git push <远程仓库名称> <本地分支名称>:<远程分支名称>
将本地分支提交到不同的本地分支
情况:本地存在分支 v1,将修改提交到本地分支 v3,再提交到远程分支 v3。
# 最初在本地分支 v1,远程仓库中还没有分支 v3。
vi new_file # 修改动作
git status # 将 v1 分支上的修改暂存起来
git checkout -b v3 # 在本地新建分支
git stash pop # 将暂存的修改放到新建分支中
git add .
git commit -m 'updata new_file'
git push -u origin v3 # 将提交的内容 push 到远程分支 v3
如果远程仓库没有该分支,则需要设置 upstream:git push --set-upstream origin target-branch-name
,或简写为:git push -u origin target-branch-name
。
参考
- GitHub 文档
- Git分支(branch)和分叉(fork)的区别
- Git 两个重要概念,即Forking(派生)和Branching(分支),以及它们在GitHub上的应用和区别
- 设置或重置ssh key
- Github 生成SSH秘钥(详细教程)
- Github配置ssh key的步骤(大白话+包含原理解释)
- Linux/Ubuntu下使用git从Github拉取项目文件、提交修改后文件的完整流程演示
- github 配置使用 personal access token 认证
- Git 教程 | 将本地修改后的文件推送到 Github 指定远程分支上
- Git:将当前修改的内容提交到新的分支上
相关文章:
Git 和 Github 的使用
补充内容:EasyHPC - Git入门教程【笔记】 文章目录 常用命令配置信息分支管理管理仓库 概念理解SSH 密钥HTTPS 和 SSH 的区别在本地生成 SSH key在 Github 上添加 SSH key 使用的例子同步本地仓库的修改到远程仓库拉取远程仓库的修改到本地仓库拉取远程仓库的分支并…...
学习分享-断路器Hystrix与Sentinel的区别
断路器(Circuit Breaker)简介 断路器(Circuit Breaker)是一种用于保护分布式系统的服务稳定性和容错性的设计模式。它的主要作用是在检测到某个服务的调用出现故障(如超时、异常等)时,快速失败…...

社区物资交易互助平台的设计
管理员账户功能包括:系统首页,个人中心,管理员管理,基础数据管理,论坛管理,公告信息管理 前台账户功能包括:系统首页,个人中心,论坛,求助留言板,公…...
19-Nacos-服务实例的权重设置
19-Nacos-服务实例的权重设置 1.根据权重负载均衡: 1.服务器设备性能有差异,部分实例所在及其性能较高,有一些较差,我们希望性能好的机器承担更多的用户请求 Nacos提供了权重配置来控制访问频率,权重越大则访问频率…...

R语言数据探索和分析23-公共物品问卷分析
第一次实验使用最基本的公共物品游戏,不外加其他的treatment。班里的学生4人一组,一共44/411组。一共玩20个回合的公共物品游戏。每回合给15秒做决定的时间。第十回合后,给大家放一个几分钟的“爱心”视频(链接如下)&a…...
Webix前端界面框架:深度解析与应用实践
Webix前端界面框架:深度解析与应用实践 Webix,作为一款功能强大的前端界面框架,近年来在开发社区中逐渐崭露头角。本文将从四个方面、五个方面、六个方面和七个方面,深入剖析Webix的特性、优势、应用实践以及面临的挑战ÿ…...

Qt基于SQLite数据库的增删查改demo
一、效果展示 在Qt创建如图UI界面,主要包括“查询”、“添加”、“删除”、“更新”,四个功能模块。 查询:从数据库中查找所有数据的所有内容,并显示在左边的QListWidget控件上。 添加:在右边的QLineEdit标签上输入需…...

新书推荐:2.2.4 第11练:消息循环
/*------------------------------------------------------------------------ 011 编程达人win32 API每日一练 第11个例子GetMessage.c:消息循环 MSG结构 GetMessage函数 TranslateMessage函数:将虚拟键消息转换为字符消息 DispatchMessage函数…...

MASA:匹配一切、分割一切、跟踪一切
文章目录 摘要1、引言2、相关工作2.1、学习实例级关联2.2、Segment and Track Anything 模型 3、方法3.1、预备知识:SAM3.2、通过分割任何事物来匹配任何事物3.2.1、MASA流程3.2.2、MASA适配器3.2.3、推理 4、实验4.1、实验设置4.2、与最先进技术的比较4.3、消融研究…...
Websocket前端传参:深度解析与实战应用
Websocket前端传参:深度解析与实战应用 在现代Web开发中,Websocket作为一种双向通信协议,已经广泛应用于实时数据传输场景。前端传参作为Websocket通信的重要组成部分,其正确性和高效性直接影响到应用的性能和用户体验。本文将深…...

造假高手——faker
在测试写好的代码时通常需要用到一些测试数据,大量的真实数据有时候很难获取,如果手动制造测试数据又过于繁重无聊,显得不够优雅,今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库&…...
前端工程化工具系列(十二)—— PostCSS(v8.4.38):CSS 转换工具
PostCSS 是转换 CSS 语法的工具。它提供 API 来对 CSS 文件进行分析和修改它的规则。 PostCSS 本身并不能直接使用,主要是使用基于 PostCSS 编写的插件。 1 安装 pnpm add -D postcss-import postcss-nested postcss-preset-env cssnano2 配置 在项目根目录下创…...

Scanpy(3)单细胞数据分析常规流程
单细胞数据分析常规流程 面对高效快速的要求上,使用R分析数据越来越困难,转战Python分析,我们通过scanpy官网去学习如何分析单细胞下游常规分析。 数据3k PBMC来自健康的志愿者,可从10x Genomics免费获得。在linux系统上,可以取消注释并运行以下操作来下载和解压缩数据。…...

【Stable Diffusion】(基础篇二)—— Stable Diffusion图形界面介绍和基本使用流程
本系列笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 在上一篇博客中,我们成功…...

OpenCv之简单的人脸识别项目(动态处理页面)
人脸识别 准备九、动态处理页面1.导入所需的包2.设置窗口2.1定义窗口外观和大小2.2设置窗口背景2.2.1设置背景图片2.2.2创建label控件 3.定义视频处理脚本4.定义相机抓取脚本5.定义关闭窗口的函数6.按钮设计6.1视频处理按钮6.2相机抓取按钮6.3返回按钮 7.定义关键函数8.动态处理…...

【Linux】进程间通信
目录 一、进程间通信概念 二、进程间通信的发展 三、进程间通信的分类 四、管道 4.1 什么是管道 4.2 匿名管道 4.2 基于匿名管道设计进程池 4.3 命名管道 4.4 用命名管道实现server&client通信 五、system V共享内存 5.1 system V共享内存的引入 5.2 共享内存的…...
UI与前端:揭秘两者的微妙差异
UI与前端:揭秘两者的微妙差异 在数字化时代的浪潮中,UI设计和前端开发已成为塑造用户体验的两大核心力量。然而,这两者之间究竟有何区别?本文将深入剖析UI设计与前端开发的四个方面、五个方面、六个方面和七个方面的差异…...

idea如何根据路径快速在项目中快速打卡该页面
在idea项目中使用快捷键shift根据路径快速找到该文件并打卡 双击shift(连续按两下shift) -粘贴文件路径-鼠标左键点击选中跳转的路径 自动进入该路径页面 例如:我的实例路径为src/views/user/govType.vue 输入src/views/user/govType或加vue后缀src/views/user/go…...

探索成功者的特质——俞敏洪的观点启示
在人生的舞台上,我们常常对成功者充满好奇与敬仰,试图探寻他们成功的奥秘。俞敏洪指出,成功者都具备七个特质,而这些特质与家庭背景和大学的好坏并无直接关系。让我们深入剖析这七个特质,或许能从中获得对我们自身成长…...
MCU的环形FIFO
fifo.h #ifndef __FIFO_H #define __FIFO_H#include "main.h"#define RINGBUFF_LEN (500) //定义最大接收字节数 500typedef struct {uint16_t Head; // 头指针 指向可读起始地址 每读一个,数字1uint16_t Tail; // 尾指针 指…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...