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

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 的区别

  1. HTTPS 可以随意克隆 Github 上的项目,而不管是谁的;而 SSH 则是,你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key,否则无法克隆。

  2. 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 的使用

补充内容&#xff1a;EasyHPC - Git入门教程【笔记】 文章目录 常用命令配置信息分支管理管理仓库 概念理解SSH 密钥HTTPS 和 SSH 的区别在本地生成 SSH key在 Github 上添加 SSH key 使用的例子同步本地仓库的修改到远程仓库拉取远程仓库的修改到本地仓库拉取远程仓库的分支并…...

学习分享-断路器Hystrix与Sentinel的区别

断路器&#xff08;Circuit Breaker&#xff09;简介 断路器&#xff08;Circuit Breaker&#xff09;是一种用于保护分布式系统的服务稳定性和容错性的设计模式。它的主要作用是在检测到某个服务的调用出现故障&#xff08;如超时、异常等&#xff09;时&#xff0c;快速失败…...

社区物资交易互助平台的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;公告信息管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;论坛&#xff0c;求助留言板&#xff0c;公…...

19-Nacos-服务实例的权重设置

19-Nacos-服务实例的权重设置 1.根据权重负载均衡&#xff1a; 1.服务器设备性能有差异&#xff0c;部分实例所在及其性能较高&#xff0c;有一些较差&#xff0c;我们希望性能好的机器承担更多的用户请求 Nacos提供了权重配置来控制访问频率&#xff0c;权重越大则访问频率…...

R语言数据探索和分析23-公共物品问卷分析

第一次实验使用最基本的公共物品游戏&#xff0c;不外加其他的treatment。班里的学生4人一组&#xff0c;一共44/411组。一共玩20个回合的公共物品游戏。每回合给15秒做决定的时间。第十回合后&#xff0c;给大家放一个几分钟的“爱心”视频&#xff08;链接如下&#xff09;&a…...

Webix前端界面框架:深度解析与应用实践

Webix前端界面框架&#xff1a;深度解析与应用实践 Webix&#xff0c;作为一款功能强大的前端界面框架&#xff0c;近年来在开发社区中逐渐崭露头角。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析Webix的特性、优势、应用实践以及面临的挑战&#xff…...

Qt基于SQLite数据库的增删查改demo

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

新书推荐:2.2.4 第11练:消息循环

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

MASA:匹配一切、分割一切、跟踪一切

文章目录 摘要1、引言2、相关工作2.1、学习实例级关联2.2、Segment and Track Anything 模型 3、方法3.1、预备知识&#xff1a;SAM3.2、通过分割任何事物来匹配任何事物3.2.1、MASA流程3.2.2、MASA适配器3.2.3、推理 4、实验4.1、实验设置4.2、与最先进技术的比较4.3、消融研究…...

Websocket前端传参:深度解析与实战应用

Websocket前端传参&#xff1a;深度解析与实战应用 在现代Web开发中&#xff0c;Websocket作为一种双向通信协议&#xff0c;已经广泛应用于实时数据传输场景。前端传参作为Websocket通信的重要组成部分&#xff0c;其正确性和高效性直接影响到应用的性能和用户体验。本文将深…...

造假高手——faker

在测试写好的代码时通常需要用到一些测试数据&#xff0c;大量的真实数据有时候很难获取&#xff0c;如果手动制造测试数据又过于繁重无聊&#xff0c;显得不够优雅&#xff0c;今天我们介绍的faker这个轮子可以完美的解决这个问题。faker是一个用于生成各种类型假数据的库&…...

前端工程化工具系列(十二)—— PostCSS(v8.4.38):CSS 转换工具

PostCSS 是转换 CSS 语法的工具。它提供 API 来对 CSS 文件进行分析和修改它的规则。 PostCSS 本身并不能直接使用&#xff0c;主要是使用基于 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同学的视频教程&#xff0c;传送门&#xff1a;B站第一套系统的AI绘画课&#xff01;零基础学会Stable Diffusion&#xff0c;这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 在上一篇博客中&#xff0c;我们成功…...

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与前端&#xff1a;揭秘两者的微妙差异 在数字化时代的浪潮中&#xff0c;UI设计和前端开发已成为塑造用户体验的两大核心力量。然而&#xff0c;这两者之间究竟有何区别&#xff1f;本文将深入剖析UI设计与前端开发的四个方面、五个方面、六个方面和七个方面的差异&#xf…...

idea如何根据路径快速在项目中快速打卡该页面

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

探索成功者的特质——俞敏洪的观点启示

在人生的舞台上&#xff0c;我们常常对成功者充满好奇与敬仰&#xff0c;试图探寻他们成功的奥秘。俞敏洪指出&#xff0c;成功者都具备七个特质&#xff0c;而这些特质与家庭背景和大学的好坏并无直接关系。让我们深入剖析这七个特质&#xff0c;或许能从中获得对我们自身成长…...

MCU的环形FIFO

fifo.h #ifndef __FIFO_H #define __FIFO_H#include "main.h"#define RINGBUFF_LEN (500) //定义最大接收字节数 500typedef struct {uint16_t Head; // 头指针 指向可读起始地址 每读一个&#xff0c;数字1uint16_t Tail; // 尾指针 指…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

二叉树-144.二叉树的前序遍历-力扣(LeetCode)

一、题目解析 对于递归方法的前序遍历十分简单&#xff0c;但对于一位合格的程序猿而言&#xff0c;需要掌握将递归转化为非递归的能力&#xff0c;毕竟递归调用的时候会调用大量的栈帧&#xff0c;存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧&#xff0c;而非…...

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项

一、条形码识别改名使用教程 打开软件并选择处理模式&#xff1a;打开软件后&#xff0c;根据要处理的文件类型&#xff0c;选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件&#xff0c;就选择 “PDF 识别模式”&#xff1b;若是处理图片文件&…...