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:将当前修改的内容提交到新的分支上

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

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

相关文章

千益畅行:合法合规的旅游卡服务,真实可靠的旅游体验

近期&#xff0c;关于千益畅行旅游卡服务的讨论引起了广泛关注。然而&#xff0c;网络上出现了一些对其误解和质疑的声音。为了澄清事实&#xff0c;我们深入了解了千益畅行的运营模式和业务特点&#xff0c;发现它是一家合法合规的旅游卡服务提供商&#xff0c;为消费者提供真…

Eslint配置指南

1. Eslint配置指南 1.1. 安装 ESLint1.2. 生成配置文件1.3. 修改配置文件1.4. 创建 .eslintignore 文件1.5. 运行 ESLint1.6. 整合到编辑器/IDE1.7. 自动修复 2. 配置prettier 2.1. 安装依赖包2.2. .prettierrc.json添加规则2.3. .prettierignore忽略文件2.4. 保存自动格式化 3…

深度学习中2D分割

深度学习中的2D图像分割 2D图像分割是深度学习中的一个重要任务&#xff0c;旨在将图像划分为不同的区域&#xff0c;每个区域对应于图像中的不同对象或背景。该任务广泛应用于医学影像分析、自动驾驶、卫星图像分析等领域。以下是对深度学习中2D图像分割的详细介绍&#xff0…

实战 | 通过微调SegFormer改进车道检测效果(数据集 + 源码)

背景介绍 SegFormer&#xff1a;实例分割在自动驾驶汽车技术的快速发展中发挥了关键作用。对于任何在道路上行驶的车辆来说&#xff0c;车道检测都是必不可少的。车道是道路上的标记&#xff0c;有助于区分道路上可行驶区域和不可行驶区域。车道检测算法有很多种&#xff0c;每…

vue2实现将el-table表格数据导出为长图片

方法一、 el-table数据导出为长图片 将el-table数据导出为图片不是一个直接的功能&#xff0c;但可以通过以下步骤实现&#xff1a; 使用html2canvas库将表格区域转换为画布(canvas)。 使用canvas的toDataURL方法将画布导出为图片格式&#xff08;例如PNG&#xff09;。 创建…

数据结构--实验

话不多说&#xff0c;直接启动&#xff01;&#x1f44c;&#x1f923; 目录 一、线性表&#x1f60e; 1、建立链表 2、插入元素 3、删除特定位置的元素 4、输出特定元素值的位置 5、输出特定位置的元素值 6、输出整个链表 实现 二、栈和队列&#x1f618; 栈 顺序栈 …

Mybatis缓存的生命周期、使用的特殊情况

以下场景均在Spring Boot程序中&#xff0c;并非手动创建SqlSession使用。 在回答这个问题之前&#xff0c;我们先来回顾一下&#xff0c;Mybatis的一级二级缓存是啥。 一级二级缓存 是什么 一级缓存&#xff08;本地缓存&#xff09;&#xff1a;一级缓存是SqlSession级别的…

将web项目打包成electron桌面端教程(一)vue3+vite+js

说明&#xff1a;后续项目需要web端和桌面端&#xff0c;为了提高开发效率&#xff0c;准备直接将web端的代码打包成桌面端&#xff0c;在此提前记录一下demo打包的过程&#xff0c;需要注意的是vue2或者vue3的打包方式各不同&#xff0c;如果你的项目不是vue3vitejs&#xff0…

数字孪生技术体系和核心能力整理

最近对数字孪生技术进行了跟踪调研学习,整理形成了调研成果,供大家参考。通过学习,发现数字孪生技术的构建过程其实就是数字孪生体的构建与应用过程,数字孪生体的构建是一个体系化的系统工程,数字化转型的最终形态应该就是数实融合互动互联的终极状态。数实融合是每个行业…

MSA算法满足条件后续之Blum定理

文章目录 引言Blum定理关于MSA算法的讨论 此文章属于文献研读内容&#xff0c;文章内容来源于以下文献 Warren B. Powell, Yosef Sheffi , (1982) The Convergence of Equilibrium Algorithms with Predetermined Step Sizes. Transportation Science ,16(1):45-55. http://dx.…

赶紧收藏!2024 年最常见 20道分布式、微服务面试题(三)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 20道分布式、微服务面试题&#xff08;二&#xff09;-CSDN博客 五、微服务架构有哪些优点和缺点&#xff1f; 微服务架构是一种设计方法&#xff0c;它将应用程序分解为一组小型、独立、松散耦合的服务。每个服务都…

[每周一更]-(第100期):介绍 goctl自动生成代码

​ 在自己组件库中&#xff0c;由于部分设计会存在重复引用各个模板的文件&#xff0c;并且基础架构中需要基础模块内容&#xff0c;就想到自动生成代码模板&#xff0c;刚好之前有使用过goctl&#xff0c;以下就简单描述下gozero中goctl场景和逻辑&#xff0c;后续自己借鉴将自…

英语学习笔记32——What‘s he/she/it doing?

What’s he/she/it doing? 他/她/它 正在做什么&#xff1f; 词汇 Vocabulary type /taɪp/ v. 打字 n. 类型&#xff0c;签字 ing形式&#xff1a;typeing 用法&#xff1a;this type of …    这种类型的…… 例句&#xff1a;我喜欢这种苹果。    I like this type…

java自学阶段二:JavaWeb开发--day80(项目实战2之苍穹外卖)

《项目案例—黑马苍穹外卖》 目录&#xff1a; 学习目标项目介绍前端环境搭建(前期直接导入老师的项目&#xff0c;后期自己敲&#xff09;后端环境搭建&#xff08;导入初始项目&#xff0c;新建仓库使用git管理项目&#xff0c;新建数据库&#xff0c;修改登录功能&#xff…

btstack协议栈---总目录

章节文章标题文章链接1.基础篇1.BLE协议栈全解一篇就够点击我2.实战篇1.Hello World example点击我2.

面试专区|【53道Java基础高频题整理(附答案背诵版)】

Java为什么被称为平台无关性语言&#xff1f; Java被称为平台无关性语言&#xff0c;是因为一旦Java代码被编译成字节码&#xff0c;这些字节码就可以在任何安装了Java虚拟机&#xff08;JVM&#xff09;的设备上运行&#xff0c;无论这个设备使用的是什么操作系统。这就是“一…

[office] 如何在Excel中拉动单元格时表头不变形- #学习方法#职场发展#经验分享

如何在Excel中拉动单元格时表头不变形? 如何在Excel中拉动单元格时表头不变形&#xff1f;Excel是我们常用的办公软件&#xff0c;当我们使用Excel拉动单元格时表头不变形&#xff0c;该如何操作呢&#xff0c;下面小编就为大家做详细讲解 如何在Excel中拉动单元格时表头不变…

用户输入表格数据设计(XPTable控件使用说明九)

XP Table控件可以编辑数据&#xff0c;程序也可以使用编辑后的数据&#xff0c;但是程序新建时又从初始化数据到模型到显示&#xff0c;这两步有点绕&#xff0c;做了一个实例来说明这块内容。 流程1&#xff1a;初始化数据--> model--> UI show 流程2&#xff1a;UI--…

skywalking基础使用

skywalking基础使用 找链路追踪Id将链路追踪Id拿到skywalking-ui中筛选对应链路补充说明例如, sql的打印能让我们了解到代码中对应的sql是否符合预期 找链路追踪Id 在接口响应header中复制x-trace-id 这个接口响应正常了, 异常没有暴露到前端, 且调用链路很长, 但我们借助s…

【讲解下ECMAScript和JavaScript之间有何区别?】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…