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

github使用手册

核心代码

配置用户名/邮箱

best practice

git init #在本地初始化一个仓库
git add . #将当前目录所有的文件加入(注意这里是加入)到缓存区
git commit -m "xxx" #将当前缓存区里的内容提交到本地仓库
git remote add <remote_rep_name> <remote-rep-url> #为本地rep添加以remote rep,其被命名为<remote-rep-name>
git push -u/--set-upstream <remote-rep-name> <local-rep-name/branch> #为remote/local创建连接,并将local rep中的内容上传到remote rep

撤销commit

回退到特定状态

git reset #将之前使用git add暂存的文件从暂存区中移除,但保留在工作目录中的修改(本地项目的内容不会被覆盖)
git reset HEAD^ #这会将 HEAD 指针移动到前一次提交,并将之前的提交内容放回暂存区。但工作目录中的文件修改并不会被撤销,需要使用 git checkout 或者 git restore 恢复到之前的状态。
git reset <commit_hash> #将 HEAD 移动到指定的提交,并且会将该提交之后的修改放回暂存区。但工作目录中的文件修改不会被撤销,需要使用 git checkout 或者 git restore 恢复到之前的状态。
git reset --hard #这会撤销到最后一次提交,并将工作目录中未提交的修改全部删除。

比较

git diff #查看工作目录和暂存区之间的差异
git diff --cached #查看暂存区和最后一次提交之间的差异
git diff HEAD #查看工作目录、暂存区和最后一次提交之间的差异
git diff <commit1> <commit2> #替换 <commit1> 和 <commit2> 分别为两个不同的提交哈希值、分支名或者标签名。这会显示两个提交之间的差异。
git diff <branch1>..<branch2> #这会显示两个分支之间的所有差异。这里有两个小点。

分支合并

checkout

git checkout branch_name #切换到特定branch
git checkout -- file_path 
#如果在工作目录中对某个文件做了修改,但还没有提交(文件不在本地仓库,而是在缓存区),执行这个命令可以撤销对该文件的修改,将其还原为最后一次提交的状态(从本地仓库恢复)。
git checkout <commit_hash> 
#命令用于将工作目录和暂存区的状态切换到指定提交(commit).这个操作将使得你处于“分离头指针”(detached HEAD)的状态,即不再位于任何分支上,而是直接在某个具体的提交上。注意:在“分离头指针”状态下,任何在这个状态下的新提交都不会属于任何分支,如果切换到其他分支,这些提交可能被遗弃,因此要谨慎使
用。
git checkout -b new_branch_name <commit_hash>
这会创建一个新分支 new_branch_name,并将它切换到指定提交。

 注意事项:

  • 在合并前最好确保你的分支是最新的,以避免冲突
  • 解决冲突时,仔细检查并确认更改,确保合并后的代码是正确的。
  • 在合并前,可以使用 git diff 查看要合并的更改,以确保将正确的更改合并到目标分支

2.23版本以上的git, 提出用git switch和git restore来替代checkout的某些功能

操作过程

git checkout master #切换到目标分支
git pull origin master #确保目标分支是最新的,想想为什么会这样
git merge <feature-branch> #在目标分支上执行合并操作.如果 Git 发现在目标分支和要合并的分支上都对相同文件进行了修改,就会发生合并冲突。在这种情况下,你需要手动解决冲突。编辑冲突文件,然后执行.
git add .  #重新添加、提交代码
git commit 
git push origin master #推送

工作原理

具体流程如下图所示[1]:

核心概念

push

git push <remote> <branch>

  • <remote> 是远程仓库的名称,通常是 origin,但也可以是其他已经配置的远程仓库的名称。
  • <branch> 是要推送的本地分支的名称。
  • 如果远程仓库是在第一次推送时创建的,你可能需要添加 -u--set-upstream。 -u 命令的作用是将本地分支与远程分支关联,并将本地分支的变化推送到远程仓库。这通常用于在第一次推送分支时,建立本地分支与远程分支之间的追踪关系。

origin

origin 是默认的远程仓库的名称。origin 的作用是作为默认的远程仓库,方便你推送(push)和拉取(pull)代码。例如,当你执行 git push origin master 时,表示将本地的 master 分支推送到名为 origin 的远程仓库。同样,git pull origin master 表示从 origin 远程仓库的 master 分支拉取最新的代码。

HEAD

HEAD 在 Git 中是一个特殊的指针,用于表示当前所在的本地仓库的最新提交。HEAD 指针通常指向当前所在的分支的最新提交,表示你正在工作的分支的最新状态。

以下是 HEAD 的一些常见用途和行为:

  1. 指向当前分支的最新提交: 当你在一个分支上进行提交时,HEAD 会随着当前分支的移动而更新,始终指向该分支的最新提交。

  2. 分离 HEAD: 如果你切换到一个特定的提交,而不是分支(例如,git checkout <commit_hash>),HEAD 将进入 "分离头指针" 的状态,这时 HEAD 直接指向具体的提交而不是分支。

  3. 切换分支: 当你使用 git checkoutgit switch 切换分支时,HEAD 会跟着切换到新的分支上,并指向该分支的最新提交。

  4. 合并分支: 在合并分支时,HEAD 通常会指向被合并的分支的最新提交。合并完成后,HEAD 会指向新生成的合并提交。

  5. 指向提交的哈希值:HEAD 处于分离头指针状态时,它直接指向一个具体的提交,而不是一个分支。在这种情况下,你可以通过 git log 查看提交的哈希值,然后使用 git checkoutgit switch 切换回分支。

  6. 表示工作区和暂存区的状态: HEAD 不仅指向最新提交,还包含了工作区和暂存区的状态。在某些操作中,如 git resetHEAD 可能会移动到之前的提交,同时更新工作区和暂存区。

总体而言,HEAD 在 Git 中是一个非常重要的指针,用于跟踪当前工作目录的状态。理解 HEAD 的位置和作用对于有效地使用 Git 是很重要的。

Reference

[1] 看完这篇还不会用Git,那我就哭了! - 知乎 (zhihu.com)

相关文章:

github使用手册

核心代码 配置用户名/邮箱 best practice git init #在本地初始化一个仓库 git add . #将当前目录所有的文件加入&#xff08;注意这里是加入&#xff09;到缓存区 git commit -m "xxx" #将当前缓存区里的内容提交到本地仓库 git remote add <remote_rep_name&g…...

怎样做ChatGPT应用开发?

要开发一个基于ChatGPT的应用&#xff0c;你可以按照以下步骤进行&#xff1a; 步骤1&#xff1a;了解ChatGPT API ChatGPT的使用通常通过API进行。你需要了解ChatGPT的API文档&#xff0c;包括如何进行请求、API端点、身份验证等信息。在开发之前&#xff0c;确保你已经获取了…...

漏洞-任意账号注册

一漏洞介绍 1.未验证邮箱/手机号 情景&#xff1a;应用为了方便用户记录用户名&#xff0c;使用邮箱和手机号作为用户名&#xff08;因此很多应用在注册的时候就要求用户填写&#xff0c;多数时候都会给用户发送激活信息&#xff0c;激活后才能登录&#xff09; 缺陷&#xff…...

一个关于jdbc操作mysql和java基础练手的通讯录管理系统小项目

首先 : 整个项目的项目结构为 : 1.第一步先导入数据库的驱动&#xff0c;我的mysql数据库是8.0以上版本&#xff0c;然后导入的驱动就是8.0.16版本的jar包&#xff1b; 1.JdbcBase : JDBC基础操作封装成了JdbcBase类,在里面先静态定义了数据库连接对象和DQL查询结果&#x…...

C++用条件变量实现线程安全的queue容器

#include <queue> #include <memory> #include <mutex> #include <condition_variable> template<typename T> class threadsafe_queue { private:mutable std::mutex mut; // 1 互斥量必须是可变的 std::queue<T> data_queue;std::condi…...

EDA实验-----3-8译码器设计(QuartusII)

目录 一. 实验目的 二. 实验仪器 三. 实验原理及内容 1.实验原理 2.实验内容 四&#xff0e;实验步骤 五. 实验报告 六. 注意事项 七. 实验过程 1.创建Verilog文件&#xff0c;写代码 ​编辑 2.波形仿真 3.连接电路图 4.烧录操作 一. 实验目的 学会Verilog HDL的…...

NFTScan | 11.06~11.12 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.11.06~ 2023.11.12 NFT Hot News 01/ 《辛普森一家》提及 NFT 及区块链&#xff0c;相关 NFT 地板价涨至 0.35 ETH 11 月 6 日&#xff0c;据 Coindesk 报道&#xff0c;美国时间周…...

2022年12月 Python(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下面哪个语句正确定义了元组类型数据tuple1?( ) A: tuple1=[“张三”,“李四”,“王五”] B: tuple1=(“张三”;“李四”;“王五”) C: tuple1=(张三,李四,王五) D: tuple1=(“张三…...

第三章 将对象映射到 XML - 使用列表或数组定义的属性

文章目录 第三章 将对象映射到 XML - 使用列表或数组定义的属性使用列表或数组定义的属性%ListOfDataTypes 或 %ArrayOfDataTypes 类型的属性%ListOfObjects 或 %ArrayOfObjects 类型的属性 第三章 将对象映射到 XML - 使用列表或数组定义的属性 使用列表或数组定义的属性 对…...

C/S架构学习之基于TCP的本地通信(客户机)

基于TCP的本地通信&#xff08;客户机&#xff09;&#xff1a;创建流程&#xff1a;一、创建字节流式套接字&#xff08;socket函数&#xff09;&#xff1a; int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本…...

CCF 备忘

一、不错的网站 CCF CCSP 竞赛历年资料 官网 http://118.190.20.162/home.page 二、基础套路 循环输入 数组标记法&#xff08;数组下标-数值 的映射&#xff09; 两个矩阵相乘 map<long long, map<long long, long long> > ans; for(int i1;i<d;i){for(int…...

Spring Framework中的依赖注入:构造器注入 vs. Setter注入

前言 构造器注入和Setter注入是依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;中两种常见的方式&#xff0c;用于向一个对象注入其所依赖的其他对象或数值。这两种注入方式有各自的特点和用途。 构造器注入&#xff08;Constructor Injection&#xff…...

Java学习之路 —— API篇

文章目录 前言Object类2. Objects类3. 包装类4. StringBuilder和StringBuffer5. StringJoiner6. Math7. System8. JDK8开始新增的日期、时间9. Arrays10. Lambda表达式11. 方法引用 前言 其实转语言来说&#xff0c;语法都比较简单&#xff0c;花个三天就会了&#xff0c;但最…...

Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结

Python3.8安装可以参考博文https://janus.blog.csdn.net/article/details/55274849 进行安装即可。 【1】Anaconda 清华的开源软件镜像站&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载&#xff0c;这里选择的是5.3.1版本。 然后正常安装就可以&am…...

DigitalVirt 日本 Lite VPS 测评

发布于 2023-07-18 在 https://chenhaotian.top/vps/digitalvirt-jp-lite/ 官网链接&#xff08;含AFF&#xff09;&#xff1a;https://digitalvirt.com/aff.php?aff459 日本 软银 CMI&#xff0c;联通首选。 流媒体解锁很好&#xff0c;详见测试。 注意&#xff0c;测速…...

Ridgeline plot / 远山图 / 山脊图 怎么画?怎么优化?

工具 Origin 2022 当然&#xff0c;用Matlab、Python也是可以的。 颜色配置 色卡调整...

【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍

目录 一、SysTick定时器 1、SysTick寄存器介绍 &#xff08;1&#xff09;控制及状态寄存器 &#xff08;2&#xff09;重装载数值寄存器 &#xff08;3&#xff09;当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 …...

Vue3封装自定义指令+h()

官方install介绍 directive/myDir/index.js 定义指令 import { h, render, ref } from "vue"; const vMyDir {mounted(el, binding) {renderElement(el, binding);}, }; // inserted是Vue2的生命周期钩子&#xff0c;所以在Vue3项目中要使用mounted const renderEl…...

爆火的迅雷网盘推广,一手云盘app拉新推广渠道必备项目 学习资料

迅雷网盘是目前几个主流网盘拉新推广之一 都可以通过”聚量推客“申请 目前主流的为&#xff1a;夸克网盘拉新、uc网盘推广、迅雷网盘&#xff0c;但是由于阿里的原因 夸克目前不对外开放名额&#xff0c;需要等待&#xff0c;取而代之主流的云盘推广就是迅雷网盘了 聚量推客…...

Jmeter 请求返回多字段 —— 传递登录接口!

Jmeter创建JDBC请求获取登录账密&#xff0c;结果存储到变量中&#xff0c;依次传给登录接口。 1、添加JDBC Request并设置变量&#xff0c;获取数据库多个字段值 ①添加好JDBC Connection Configuration并做好数据库连接配置 ②导入mysql驱动jar包 ③测试计划->添加线程…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...