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 的一些常见用途和行为:
-
指向当前分支的最新提交: 当你在一个分支上进行提交时,
HEAD会随着当前分支的移动而更新,始终指向该分支的最新提交。 -
分离 HEAD: 如果你切换到一个特定的提交,而不是分支(例如,
git checkout <commit_hash>),HEAD将进入 "分离头指针" 的状态,这时HEAD直接指向具体的提交而不是分支。 -
切换分支: 当你使用
git checkout或git switch切换分支时,HEAD会跟着切换到新的分支上,并指向该分支的最新提交。 -
合并分支: 在合并分支时,
HEAD通常会指向被合并的分支的最新提交。合并完成后,HEAD会指向新生成的合并提交。 -
指向提交的哈希值: 当
HEAD处于分离头指针状态时,它直接指向一个具体的提交,而不是一个分支。在这种情况下,你可以通过git log查看提交的哈希值,然后使用git checkout或git switch切换回分支。 -
表示工作区和暂存区的状态:
HEAD不仅指向最新提交,还包含了工作区和暂存区的状态。在某些操作中,如git reset,HEAD可能会移动到之前的提交,同时更新工作区和暂存区。
总体而言,HEAD 在 Git 中是一个非常重要的指针,用于跟踪当前工作目录的状态。理解 HEAD 的位置和作用对于有效地使用 Git 是很重要的。
Reference
[1] 看完这篇还不会用Git,那我就哭了! - 知乎 (zhihu.com)
相关文章:
github使用手册
核心代码 配置用户名/邮箱 best practice git init #在本地初始化一个仓库 git add . #将当前目录所有的文件加入(注意这里是加入)到缓存区 git commit -m "xxx" #将当前缓存区里的内容提交到本地仓库 git remote add <remote_rep_name&g…...
怎样做ChatGPT应用开发?
要开发一个基于ChatGPT的应用,你可以按照以下步骤进行: 步骤1:了解ChatGPT API ChatGPT的使用通常通过API进行。你需要了解ChatGPT的API文档,包括如何进行请求、API端点、身份验证等信息。在开发之前,确保你已经获取了…...
漏洞-任意账号注册
一漏洞介绍 1.未验证邮箱/手机号 情景:应用为了方便用户记录用户名,使用邮箱和手机号作为用户名(因此很多应用在注册的时候就要求用户填写,多数时候都会给用户发送激活信息,激活后才能登录) 缺陷ÿ…...
一个关于jdbc操作mysql和java基础练手的通讯录管理系统小项目
首先 : 整个项目的项目结构为 : 1.第一步先导入数据库的驱动,我的mysql数据库是8.0以上版本,然后导入的驱动就是8.0.16版本的jar包; 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.实验内容 四.实验步骤 五. 实验报告 六. 注意事项 七. 实验过程 1.创建Verilog文件,写代码 编辑 2.波形仿真 3.连接电路图 4.烧录操作 一. 实验目的 学会Verilog HDL的…...
NFTScan | 11.06~11.12 NFT 市场热点汇总
欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.11.06~ 2023.11.12 NFT Hot News 01/ 《辛普森一家》提及 NFT 及区块链,相关 NFT 地板价涨至 0.35 ETH 11 月 6 日,据 Coindesk 报道,美国时间周…...
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的本地通信(客户机):创建流程:一、创建字节流式套接字(socket函数): int sock_fd socket(AF_LOCAL,SOCK_STREAM,0);二、创建客户机和服务器的本地网络信息结构体并填充客户机和服务器本…...
CCF 备忘
一、不错的网站 CCF CCSP 竞赛历年资料 官网 http://118.190.20.162/home.page 二、基础套路 循环输入 数组标记法(数组下标-数值 的映射) 两个矩阵相乘 map<long long, map<long long, long long> > ans; for(int i1;i<d;i){for(int…...
Spring Framework中的依赖注入:构造器注入 vs. Setter注入
前言 构造器注入和Setter注入是依赖注入(Dependency Injection,DI)中两种常见的方式,用于向一个对象注入其所依赖的其他对象或数值。这两种注入方式有各自的特点和用途。 构造器注入(Constructor Injectionÿ…...
Java学习之路 —— API篇
文章目录 前言Object类2. Objects类3. 包装类4. StringBuilder和StringBuffer5. StringJoiner6. Math7. System8. JDK8开始新增的日期、时间9. Arrays10. Lambda表达式11. 方法引用 前言 其实转语言来说,语法都比较简单,花个三天就会了,但最…...
Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结
Python3.8安装可以参考博文https://janus.blog.csdn.net/article/details/55274849 进行安装即可。 【1】Anaconda 清华的开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载,这里选择的是5.3.1版本。 然后正常安装就可以&am…...
DigitalVirt 日本 Lite VPS 测评
发布于 2023-07-18 在 https://chenhaotian.top/vps/digitalvirt-jp-lite/ 官网链接(含AFF):https://digitalvirt.com/aff.php?aff459 日本 软银 CMI,联通首选。 流媒体解锁很好,详见测试。 注意,测速…...
Ridgeline plot / 远山图 / 山脊图 怎么画?怎么优化?
工具 Origin 2022 当然,用Matlab、Python也是可以的。 颜色配置 色卡调整...
【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍
目录 一、SysTick定时器 1、SysTick寄存器介绍 (1)控制及状态寄存器 (2)重装载数值寄存器 (3)当前数值寄存器 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的生命周期钩子,所以在Vue3项目中要使用mounted const renderEl…...
爆火的迅雷网盘推广,一手云盘app拉新推广渠道必备项目 学习资料
迅雷网盘是目前几个主流网盘拉新推广之一 都可以通过”聚量推客“申请 目前主流的为:夸克网盘拉新、uc网盘推广、迅雷网盘,但是由于阿里的原因 夸克目前不对外开放名额,需要等待,取而代之主流的云盘推广就是迅雷网盘了 聚量推客…...
Jmeter 请求返回多字段 —— 传递登录接口!
Jmeter创建JDBC请求获取登录账密,结果存储到变量中,依次传给登录接口。 1、添加JDBC Request并设置变量,获取数据库多个字段值 ①添加好JDBC Connection Configuration并做好数据库连接配置 ②导入mysql驱动jar包 ③测试计划->添加线程…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
