GIT学习-常用命令

2023-05-16

2**

GIT学习-常用命令

**
在学习git前首先需要对相关名词和概念有基本了解,git基础知识学习可参考以下资料:

  1. git基础知识:GIT学习-(1)基础知识
  2. git下载与配置:GIT学习-(2)GIT下载与配置
  3. GitHub/Gitee/Gitlab的ssh公钥配置:GIT学习-(3)配置SSH公钥及新建远端仓库(创建版本库)
  4. git官方常用命令文档:git常用命令

1. GIT基础配置

# 配置用户名
git config --global user.name "用户名"

# 配置用户邮箱
git config --global user.email 用户邮箱

#查看系统config
git config --system --list

#查看当前用户(global)配置
git config --global --list

2. 配置SSH公钥

# -t rsa 加密方法
ssh-keygen -t rsa -C "email邮箱"

3. GIT基础命令

# 初始化目录
git init

# 查看所有文件状态
git status
# 查看指定文件状态
git status filename
ex:git status readme.txt

4.1 常用命令

4.1 添加代码到暂存区

# 将所有修改的代码添加到暂存区
git add .
# 将指定代码文件添加到暂存区
git add [filename]
ex: git add readme.md

# 强制添加文件到暂存区(一般是.gitignore忽略的文件)
git add -f <filename>

4.2 暂存区代码提交到本地仓库

# 将暂存区代码提交至本地仓库并注提交说明
git commit -m "note"
ex: git commit -m "first commit"

4.3取消暂存区文件

# 取消暂存区单个文件
git reset HEAD <filename>

# 取消暂存取所有文件
git reset HEAD -- .

4.4 将本地仓库代码推送到远程

# 将本地仓库代码推送到远程仓库的不同分支
git push [remote] [remote-branch]

# 将本地仓库master分支推到origin远端仓库(远端仓库就有了matser分支)
git push origin master

# 由于远端仓库是空的,所以首次推送到远端要加-u
git push -u origin master
# 将本地仓库代码推送到名为origin远程仓库的dev分支
ex: git push origin dev
# 将本地的dev分支推送到远程仓库的dev-1分支
git push origin dev:dev-1

4.5 拉取远端代码

# 将远程仓库指定分支代码拉到本地工作区
git pull [remote] [remote-branch]

# 从origin远程仓库拉取master分支代码
ex: git pull origin master

5. 查看历史提交记录

# 查看提交历史
git lg

# 查看提交历史记录详细信息
git log

git log

# 查看每次提交的备注说明和版本号
git log --pretty=oneline

git log --pretty=oneline
每次提交版本号都是唯一,HEAD表示当前版本,当我们需要回退到某个版本的代码时就必须要知道版本号才能回退

# 查看命令历史
git reflog

git reflog

6. 版本回退

当前版本为HEAD,上版本为HEAD^,上上个版本为HEAD^^,上100个版本HEAD~100

# 回退到上一版本
git reset --hard HEAD^

# 回退到上上一个版本
git reset --hard HEAD^^

# 回退到指定版本
git reset --hard 版本号
ex: git reset --hard 1094a

7. 查看文件差异

# 查看工作区与版本库最新版本区别
git diff HEAD -- 文件名
ex: git diff HEAD -- readme.txt

在这里插入图片描述

8. 撤销修改

修改的文件放到了缓存区和本地仓库,但是想撤销修改

# 撤销文件修改
git checkout -- 文件名
ex: git checkout -- readme.txt

撤销修改后的文件有两种情况:
(1)文件修改后还未放到缓存区,撤销修改后将回到与版本库一模一样的状态,也就是回退到上一次执行git commit命令后的文件
(2)文件修改后将文件已经git add到了缓存区,然后文件又做了修改,此时撤销修改文件将变成添加到暂存区后的状态,也就是回退到上一次执行git add命令后的文件

9. 删除文件

# 删除工作区文件
rm 文件名
ex:rm test.txt

# 删除提交到版本库(本地仓库)的文件
git rm 文件名
ex: git rm test.txt

如果删错了文件,可以使用撤销修改将误删的文件恢复,但只能将文件恢复到最新版

10. 远程仓库

10.1 查看远程仓库

查看远程仓库

# 查看远程仓库
git remote -v

在这里插入图片描述
查看远程仓库详细信息

# 查看远程仓库详细信息
git remote -v <remote-name>
ex: git remote -v origin

在这里插入图片描述

10.2 关联远程仓库

远程仓库名通常用 origin 命名,URL就是在github/gitee克隆代码的地址
在这里插入图片描述

# 关联远程仓库
git remote add 远程仓库名 URL
ex:git remote add origin git@github.com:michaelliao/learngit.git

10.3 删除远程仓库

删除远程仓库即解除本地与远程仓库的链接关系,远程仓库仍然存在,若想删除远程仓库则需要登录github/gitee

# 删除远程仓库
git remote rm 远程仓库名字
ex: git remote rm origin

10.4 重命名远程仓库

# 重命名远程仓库
git remote rename <old-remote-name> <new-remote-name>

11. 分支

11.1 创建分支

ps:注意要和前面的撤销修改文件命令区分开来

# 创建分支
git checkout 分支名
ex: git checkout dev

# 创建并切换到该分支
git checkout -b 分支名
git switch -c 分支名
ex: git checkout -b dev

# 切换到已有分支
git switch 分支名

11.2 查看分支

# 查看本地分支
git branch

# 查看远程分支
git branch -r

# 查看本地和远程分支
git branch -a

11.3 删除分支

# 删除本地分支
git branch -d 分支名	# -d会在删除前检查merge状态(其与上游分支或者与head)
git branch -D 分支名	# -D是git branch --delete --force的简写,它会直接删除,主要用于强制删除一个没有被合并的分支
ex:git branch -D dev

# 删除远程分支
git push <remote-name> --delete 分支名
ex:git push origin --delete dev

11.4 合并分支

Fast forward模式(快速合并模式)
通常,合并分支时,如果用Fast forward模式进行分支合并,在这种模式下,删除分支后,会丢掉分支信息。

# 合并分支到当前分支上
git merge 分支名
# 当前位于master分支,将dev分支内容合并到master分支
ex: git merge dev

强制禁用快速合并模式
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "提交说明" 合并的分支名

# 强制禁用快速合并模式
# 将dev分支内容合并到当前master分支上,并提交commit说明
ex: git merge --no-ff -m "merge with no-ff" dev

11.5 管理分支

当在当前分支(dev)完成一半工作需要切到其他分支工作时,当前分支部分文件没有修改完,此时使用git status查看当前分支会发现有未被跟踪和修改的文件,此时输入git stash命令可以将当前分支临时封存起来,然后git status查看当前分支状态是干净的,可以发现之前未被跟踪和修改的文件被临时封存起来了,这时候切到其他分支工作不影响当前分支工作。
当切回该分支继续工作时,可以查看临时封存的版本号,并可以切换临时封存前的状态,但需要删除封存的stash内容

# 临时封存分支
git stash

# 查看封存文件记录,可以看到临时封存的版本号
git stash list

# 恢复到临时封存之前的状态
git stash apply

# 删除临时封存的stash内容
git stash drop

# 恢复并删除临时封存内容
git stash pop

11.6 修改分支

当前位于dev分支,master分支有个bug修改了,同样需要将dev分支上该处的bug进行修改,有两种方法:

  1. 直接将master分支merge到当前dev分支上。这样会存在一个问题,就是别人也在master分支合并了很多内容,当前dev分支相较于master分支落后了很多,而我只想修改当前dev分支存在那个bug的位置,这样就需要用到第二种方法;
  2. 修改bug单独切了一个分支issue(从master分支切出来),提交commit后版本号为4c805e2,然后将issue分支合并到master分支上;此时切回之前工作的dev分支,输入cherry-pick命令就能将issue分支内容合并到dev分支上
    cherry-pick命令使用场景可参考廖雪峰老师博客的说明,说的很清楚
    git cherry-pick命令使用
git cherry-pick 版本号
ex: git cherry-pick 4c805e2

12. 拉代码

当本地的dev分支需要拉远程仓库dev的代码时,使用git pull拉取代码失败报一下错误,需要将本地dev分支与远程仓库dev分支先建立链接,然后在git pull拉代码
在这里插入图片描述

# 将本地分支与远程仓库对应分支建立链接
git branch --set-upstream-to <branch-name> origin/<branch-name>
git branch --set-upsteam-to=远程仓库名/远程仓库对应分支 本地分支
ex:git branch --set-upstream-to=origin/dev dev

13. 标签

13.1 创建标签

# 打标签
# 默认标签是打在最新提交的`commit`上的
git tag <tag name>
ex: git tag v1.0

# 对指定版本打标签
git tag <tag name> <commit>
ex: git tag v1.0 f52c

# 带有说明的标签
git tag -a <tag name> -m "标签说明" <commit>
ex: git tag -a v0.1 -m "version 0.1 released" 1094adb

13.2 查看标签

标签不是按时间顺序列出,而是按字母排序的

# 查看标签
git tag

# 查看标签具体信息
git show <tag name>
ex: git show v1.0

13.3 删除标签

# 删除标签
git tag -d <tag name>
ex: git tag -d v0.1

13.4 推送/删除标签

# 将标签推送到远程
git push <remote> <tag name>
ex: git push origin v1.0

# 将本地所有标签推送到远程
git push <remote> --tags
ex: git push origin --tags
# 删除本地标签
git tag -d <tag name>
ex: git tag -d v1.0

# 删除远程标签
git push <remote> :ref/tags/<tag name>
ex: git push origin :refs/tags/v0.9

14. 小技巧

改变版本号、提交说明、分支的颜色

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

使用git lg命令就能很清楚的区分
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GIT学习-常用命令 的相关文章

  • VScode进行python开发出现 No module named “XXX“的解决方法

    VScode进行python开发出现 No module named 34 XXX 34 的解决方法 最近从pycharm转向vscode的时候 xff0c 遇到了如下问题 span class token keyword import s
  • CM3寄存器简介

    Cortex M3基础 寄存器组 通用目的寄存器组R0 R7 也被称为低组寄存器 xff0c 所有指令都能访问字长32位 通用目的寄存器组R8 R12 高组寄存器 32位寄存器 复位后的初始值不可预料 堆栈指针R13 CM3中共有两个堆栈指
  • 基于亚博K210开发板的学习之旅(一)

    本文参考亚博智能官方K210开源课程 五月份购买了亚博的K210开发板 xff0c 但由于课程压力就搁置了 xff0c 最近暑假得空又恰逢电赛清单里有这个 芯片 xff0c 就抽空学习一下 xff0c 特写下这些 xff0c 以作记录 按照
  • STM32标准库通用软件模拟IIC

    STM32标准库通用软件模拟IIC 继上次通用可移植的矩阵键盘之后 xff0c 便继续寻找着下一个能够拿来只需改改引脚就可以使用的通用方案 恰好最近在研究PCA9685 xff0c 这是一片能够产生最多十六路PWM信号的芯片 xff0c 通
  • STM32F103控制PCA9685产生16路PWM波控制SG90舵机

    STM32控制PCA9685产生16路PWM波控制SG90舵机 如果你能点开这篇文章 xff0c 说明你已经知道PCA9685是多么强大 xff0c NXP公司原本做这片芯片是为了提供给LED使用 xff0c 在其官方文档里也能看到所有PW
  • 从源代码来看HAL库函数(一) HAL基础函数

    从源代码来看HAL库函数 xff08 一 xff09 HAL基础函数 全局变量 IO uint32 t uwtick 这个变量充当了一个运行时长计数的作用 xff0c 每发生一次SysTick中断就会加一 xff0c 直至溢出 xff0c
  • 使用TCP+串口与板子进行网络通信

    最近做了一个嵌入式的project xff0c 大概要求就是做一个client端 xff0c 一个sensor端 xff0c 两者通过TCP UDP进行通信 xff0c 然后在client端输入不同的命令sensor需做出不同的处理 xff
  • 毕业论文格式(图片题注引用,表格,公式格式)

    本科毕业论文差不多写完了 xff0c 记录一下一些格式 xff0c 以后写作可能会用到 xff0c 就可以翻起来看看 首先 xff0c 如果可以找到一篇格式符合要求的word文档的话 xff0c 最简单的方法就是在这个文档的基础上进行内容的
  • 图像处理——相位恢复(GS,TIE,改进型角谱迭代法)(已更新代码)

    利用GS xff0c TIE xff0c 改进型角谱迭代算法进行相位恢复 角谱传播理论 角谱传播理论可以翻阅傅里叶光学的书 xff0c 就能找到定量分析的计算公式 xff0c 可以分析某个平面的角谱垂直传播到另外一个平面的角谱 xff0c
  • 串口应用:遵循uart协议,发送多个字节的数据(状态机)

    上一节中 xff0c 我们遵循uart协议 xff0c 它发送一次只能发送6 7 8位数据 xff0c 我们不能随意更改位数 xff08 虽然在代码上可行 xff09 xff0c 不然就不遵循uart协议了 xff0c 会造成接收端无法接收
  • 数码管动态显示Verilog实现(参考小梅哥教程)(视觉暂留)

    一个数码管有八个引脚 xff0c 控制八段二极管的亮灭 xff0c 用以显示需要的数字 当有N个数码管时 xff0c 一个一个控制的话需要N x 8 个引脚 xff0c 消耗资源较多 因此可以利用动态显示的方案通过人眼的视觉暂留特性达到静态
  • 彻底理解DDS(信号发生器)的fpga实现(verilog设计代码)

    DDS xff08 Direct Digital Synthesis xff09 是一种把一系列数字信号通过D A转换器转换成模拟信号的数字合成技术 它有查表法和计算法两种基本合成方法 在这里主要记录DDS查表法的fpga实现 查表法 xf
  • HDMI/DVI

    一 基础知识 1 历史 早期在FPGA芯片上实现HDMI控制显示是使用HDMI发送芯片 xff0c eg xff1a ADV7513 sil9022 xff0c CH7301等 用之前VGA控制中输出的RGB信号 行场同步信号和使能信号输入
  • HDMI/DVI____TMDS编码

    一 编码步骤 xff1a 基本方法 xff1a 取第一位数据为初值 xff0c 接下来输入的每一位与前一导出的位 xff08 根据判断条件 xff09 进行异或XOR或者同或XNOR xff08 最小化传输 xff0c 减少0 1翻转 xf
  • HDMI/DVI____串行发送器

    一 功能 xff1a 把10bit数据转化为串行数据在一个时钟周期全部输出 xff08 先输出高位 xff0c 再输出低位 xff09 二 框图 二 思路 对于TMDS编码器 xff0c 在每一个输入时钟周期 xff0c 输入一次数据到TM
  • keil添加新文件.c.h

    文章目录 添加文件到组中1 双击组名称2 点击快捷键 添加头文件路径 h1 点击魔术棒快捷键2 头文件加 添加文件到组中 1 双击组名称 双击组名称 xff0c 打开弹窗 xff0c 然后选择相应的组中的新文件 xff0c 在点击ADD 2
  • QT常用控件(二)——自定义控件封装

    引言 Qt已经提供了很多的基础控件供开发使用 xff0c 而Qt原生的控件有时候并不能满足我们的需求 xff0c 特别是在工业的运用上 xff0c 比如我们需要一个日期时间的选择器 xff0c Qt虽然已经提供了原生的QDateTime控件
  • STM32之串口通信USART模块学习(1)

    一 通信接口 通信的目的 xff1a 将一个设备的数据传送到另一个设备 xff0c 扩展硬件系统通信协议 xff1a 制定通信的规则 xff0c 通信双方按照协议规则进行数据收发 单端信号通信的双方必须要共地 xff0c 因为都是对GND的
  • 2019电赛总结(一)

    2019电赛总结 xff08 一 xff09 文章目录 2019电赛总结 xff08 一 xff09 4 那之前5 电赛初期6 电赛中期7 电赛强化练习8 电赛预热阶段8月初9 那以后 4 那之前 2019电赛总结 序 xff09 5 电赛
  • 统计从键盘输入的一行字符中小写字母,大写字母,数字字符和其它字符的个数。

    统计从键盘输入的一行字符中小写字母 xff0c 大写字母 xff0c 数字字符和其它字符的个数 C语言实现 vs 2019 span class token macro property span class token directive

随机推荐

  • c语言求1~10的阶乘和

    求1 43 2 43 3 43 43 10 的和 span class token macro property span class token directive keyword include span span class toke
  • C和Cpp区别

    1 输入 xff0c 输出不同 xff08 out xff0c put xff09 c语言 xff1a include lt stdio h gt scanf 34 d 34 amp a printf 34 a 61 d n 34 a cp
  • C++实现基于顺序搜索的动态分区分配算法

    目录 1 需求分析 2 代码实现 3 测试用例 4 总结与收获 1 需求分析 动态分区分配又称为可变分区分配 xff0c 他是根据进程的实际需要 xff0c 动态地为之分配内存空间 在实现动态分区分配时 xff0c 将涉及到分区分配中所有的
  • C语言实现TCP编程

    C语言实现TCP编程 1 主机字节序和网络字节序2 套接字的地址结构IP地址转化的方法 3 TCP的网络接口4 TCP服务器端的编程流程5 TCP客户端的编程流程6 运行结果 1 主机字节序和网络字节序 主机字节序 xff1a 不同的芯片
  • QT---用户登录注册案例实现

    用户登录 注册 span class token macro property span class token directive hash span span class token directive keyword include
  • C++中list详解

    list详解 list的介绍list函数说明成员类型构造函数元素访问迭代器容量修改器操作 vector和list区别总结vector和list的使用场景 仿写END xff01 96 在这里插入代码片 96 list的介绍 list是序列容
  • sip response 摘要认证

    详解摘要认证 1 什么是摘要认证 摘要认证与基础认证的工作原理很相似 xff0c 用户先发出一个没有认证证书的请求 xff0c Web服务器回复一个带有WWW Authenticate头的响应 xff0c 指明访问所请求的资源需要证书 但是
  • Prim算法实现最小生成树

    Prim算法实现最小生成树 1 最小生成树是什么2 最小生成树的用途3 Prim算法描述4 Prim算法演示最小生成树过程5 Prim算法实现END 1 最小生成树是什么 对连通图进行遍历 过程中所经过的边和顶点的组合可看做是一棵普通树 通
  • 哈夫曼树,哈夫曼编码及应用——(代码实现)

    哈夫曼树 xff0c 哈夫曼编码及应用 1 哈夫曼树1 1 什么是哈夫曼树 2 如何构造哈夫曼树 xff08 哈夫曼算法 xff09 2 1 举例实现哈夫曼树2 1 1手动实现具体步骤2 1 2代码实现具体步骤 3 哈夫曼编码3 1 什么是
  • 二叉排序树详解及实现

    二叉排序树详解及实现 1 什么是二叉排序树2 二叉排序树的数据结构2 1二叉排序树的节点类型2 2二叉排序树中插入某个元素2 3 二叉排序树中按值查找元素2 4 找排序二叉树中的最小值2 5返回排序二叉树中ptr中序遍历的后续节点2 6 寻
  • 平衡二叉树的一系列操作:删除、插入(在二叉排序树中插入新结点后,如何保持平衡)、调整平衡等等等

    平衡二叉树的插入 xff08 在二叉排序树中插入新结点后 xff0c 如何保持平衡 xff09 1 平衡二叉树的定义2 平衡二叉树的插入 xff08 调整最小不平衡子树A xff09 2 1LL xff08 在A的左孩子的左子树中插入导致不
  • 网络 UDP协议(C++|代码通过udp协议实现客户端与服务端之间的通信)

    这里写目录标题 udp通信编程各端的操作流程 xff1a 服务端操作流程 xff1a 客户端操作流程 xff1a 第2 3步与服务端不同 socket接口介绍udp客户服务端代码实现 推荐阅读 socket套接字编程就是在网络程序中编写代码
  • 网络 TCP协议(C++代码|通过tcp协议实现客户端与服务端之间的通信)

    目录 TCP通信编程各端的操作流程 xff1a 服务端操作流程 xff1a 客户端操作流程 xff1a 推荐先学习UDP协议在学习TCP协议 在UDP协议博客中讲解得更详细 xff0c 看懂UDP协议就很容易理解TCP了 网络 UDP协议
  • Matlab学习-箱型图绘制

    1 箱型图简介 xff1a 参考链接 xff1a boxplot函数用法详解 箱型图简介 箱型图主要包括的数据有 xff1a 最大值 最小值 上四分位数 下四分位数和中位数 xff0c 以及异常值 2 箱型图绘制 X span class
  • Matlab学习-CDF(累积分布函数图)绘制

    累积分布函数图绘制 参考链接 xff1a 1 Matlab官方说明 2 参考链接 3 属性设置 CDF xff1a 累积分布函数图 xff0c 顾名思义就是能够直观的反应某组数列分布的概率情况 xff0c 能够非常直观的反应误差精度大小 图
  • Matlab学习-频率分布直方图绘制

    参考链接 xff1a hist xff08 xff09 函数用法 频率分布直方图 xff1a 在数理统计中 xff0c 会经常使用到频率分布直方图 xff0c 能够直观的反应频率分布的范围大小 xff0c 在直角坐标系中 xff0c 横轴为
  • Matlab学习-经纬度在matlab内置地图显示

    已知经纬度坐标 xff0c 将其显示是地图上 参考链接 xff1a 使用matlab绘制世界地图并根据经纬度绘制点位 附m map的下载与安装说明 wm span class token operator 61 span webmap sp
  • ARM存储格式的“大小端”解析

    ARM储存 大端格式和小端格式 所谓的大端模式 xff0c 是指数据的高位 xff0c 保存在内存的低地址中 xff0c 而数据的低位 xff0c 保存在内存的高地址中 xff0c 这样的存储模式有点儿类似于把数据当作字符串顺序处理 xff
  • UBLOX板卡基础设置--F9P板卡配置(基准站和流动站)

    UBLOX F9P板卡配置 基准站 流动站 UBX F9P模块为双频定位芯片 xff0c 是市场上目前最常用的高精定位模块 xff0c 差分定位精度可达厘米级 xff0c 具体参数详见官方文档 官方文档下载链接 xff1a UBX F9P模
  • GIT学习-常用命令

    2 GIT学习 常用命令 在学习git前首先需要对相关名词和概念有基本了解 xff0c git基础知识学习可参考以下资料 xff1a git基础知识 xff1a GIT学习 1 基础知识git下载与配置 xff1a GIT学习 xff08