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

Git超详细教程

文章目录

  • 一、安装并配置Git
  • 二、Git的基本操作
  • 三、Github/GitLab/Gitee
  • 四、分支


一、安装并配置Git

查看所有的全局配置项

git config --list --global

查看指定的全局配置项

git config user.name
git config user.email

配置用户信息

git config --global user.name "xiaoming"
git config --global user.email "123@qq.com"

如果使用了–global选项,那么命令只需要运行一次,即可永久生效。

获取帮助信息

#要想打开git config命令的帮助手册
git help config
#要想获取git config命令的快速参考
git config -h

二、Git的基本操作

Git的基本操作

#初始化仓库
git init# 检查文件的状态
git status# 以精简的方式显示文件状态
git status -s
# 或
git status --short# 跟踪新文件
# 跟踪index.html
git add index.html
# 跟踪所有文件
git add .#git add .出现warning警告信息
git config core.autocrlf false# 提交更新
git commit
# 提交更新,-m选项后面是本次提交内容的描述
git commit -m "v1.0.0"
#此时会出现 nothing to commit,working tree clean.# 清空窗口
clear

如果修改了文件,然后执行git status会出现红色的modified:index.html,表示已修改的状态,但是还没有放到暂存区。

如果执行git status -s,会出现红色的 M index.html,表示已修改的状态,但是还没有放到暂存区。

# 撤销对文件的修改
git checkout --index.html

修改的文件显示的是红色的M,还没有放到暂存区显示的是红色的??

 # 取消暂存的文件git reset HEAD 要移除的文件名称# git跳过暂存区,直接进行提交git commit -a -m “描述信息”# Git仓库和工作区都移除文件git rm -f index.html# Git仓库移除文件git rm --cached index.html

.gitignore文件的例子

# 忽略所有的.a文件
*.a#跟踪所有的 lib.a,即便在前面忽略了 .a文件
!lib.a#只忽略当前目录下的T0D0文件,而不忽略shbdir/T0D0
/T0D0#忽略任何目录下名为build的文件夹
build/#忽略doc/notes.txt,但不忽略doc/server/arch.txt
doc/*.txt#忽略doc/目录及所有子目录下的.pdf文件
doc/**/*.pdf

查看提交历史

 # 按照时间先后顺序列出所有的提交历史,最近的提交排在最上面git log#只展示最新的两条提交历史,数字可以按需进行填写git log -2#在一行上展示最近两条提交历史的信息git log -2 --pretty=oneline#在一行上展示最近两条提交历史的信息,并自定义输出的格式# %h提交的简写哈希值,%an作者名字,%ar作者修订日期,按多久以前的方式显示,%s提交说明git log -2 --pretty==format:"%h | %an | %ar | %s"

回退到指定的版本

   # 在一行上展示所有的提交历史git log --pretty=oneline#使用 git reset --hard命令,根据指定的提交ID回退到指定版本git reset --hard<CommitID>#在旧版本中使用git reflog --pretty==oneline命令,查看命令操作的历史git reflog --pretty=oneline#再次根据最新的提交ID,跳转到最新的版本git reset --hard<CommitID>

三、Github/GitLab/Gitee

HTTPS:零配置,但是每次访问仓库时,需要重复输入账号和密码才能访问成功;

SSH:需要进行额外的配置,但是配置成功后,每次访问仓库时,不需要重复输入账号和密码。

 #将本地仓库和远程仓库进行关联,并把远程仓库命名为origingit remote add origin 地址#案例git remote add origin ssh://git@192.168.1.209:8222/yuxiao/tool.git#将本地仓库中的内容推送到远程的origin仓库中(第一次)git push -u origin master#第二次以上git push

检测SSH key是否配置成功

ssh -T git@github.com

#将远程仓库克隆到本地
git clone 远程仓库的地址

四、分支

master主分支

在初始化本地Git仓库时,Git默认已经帮我们创建了一个名字为master的分支。通常我们把这个master分支叫做主分支。

在实际工作中,master主分支的作用是:用来保存和记录整个项目已完成的功能代码。

因此,不允许程序员直接在master分支上修改代码,因为风险大,容易导致整个项目崩溃。

# 查看分支列表(查看当前属于哪个分支)
git branch# 创建新分支
git branch 分支名称

新分支的代码和当前分支代码一样

# 切换分支
git checkout login# 分支的快速创建和切换
git checkout -b 分支名称
#(创建上述的分支,要使用master分支进行操作,这是约定)

合并分支

# 切换到master主分支
git checkout master# 在master分支上运行git merge命令,将logo分支的代码合并到master分支
git merge logo# 删除分支
git branch -d 分支名称#如果分支没有合并到master,需要强制删除分支
git branch -D 分支名称

遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行了不同的修改,Git就没法干净的合并他们,此时,我们需要打开这些分支冲突的文件,然后手动解决冲突。

# 假设:在reg分支合并到master分支期间,代码发生了冲突
git checkout master
git merge reg#打开包含冲突的文件,手动解决冲突后,再执行如下的命令
git add .
git commit -m "解决了分支合并冲突的问题"

将本地分支推送到远程仓库 (重要)

  # -u表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带-u参数git push -u 远程仓库的别名 本地分支名称:远程分支名称#案例git push -u origin payment:pay#如果希望远程分支的名称和本地分支的名称保持一致,可以对命令进行简化:git push -u origin payment# 查看远程仓库中所有的分支列表git remote show 远程仓库名称#例如git remote show origin

跟踪分支

# 从远程仓库中,把对应的远程分支下载到本地仓库,保持本地分支和远程分支名称相同
git checkout 远程仓库分支#示例
git checkout qd#从远程仓库中,把对应的远程仓库下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称#示例
git checkout -b reg origin/qd

拉取远程分支最新代码

  # 从远程仓库,拉取当前分支最新的代码,保持当前分支的代码和远程分支代码一致git pull

删除远程分支

  # 删除远程仓库中,指定名称的远程分支git push 远程仓库名称 --delete 远程分支名称# 示例git push origin --delete qd

清空远程仓库

git init
git remote add origin 远程地址
#对于error: failed to push some refsto‘远程仓库地址’
#1 使用如下命令(执行 git pull --rebase 的时候必须保持本地目录干净)
git pull --rebase origin master#我们需要使用以下命令清空Git仓库的内容:
git rm -r *
#接下来,我们需要使用以下命令创建一个空的提交记录:
git commit --allow-empty -m "删除所有内容"touch README.md
git add .
git commit -m "删除所有文件"
git push origin master

相关文章:

Git超详细教程

文章目录 一、安装并配置Git二、Git的基本操作三、Github/GitLab/Gitee四、分支 一、安装并配置Git 查看所有的全局配置项 git config --list --global查看指定的全局配置项 git config user.name git config user.email配置用户信息 git config --global user.name "…...

C++ 回调函数

一、使用方法 1.定义一个函数指针 typedef int (*pCallback)(int a, int b);2.定义一个带参的回调函数&#xff08;注释部分是普通回调函数&#xff0c;不用定义第一步里的函数指针&#xff09; //带参 int oneCallback(int a, int b, pCallback p) //int oneCallback(int a, i…...

xilinx FPGA IOB约束使用以及注意事项

文章目录 一、什么是IOB约束二、为什么要使用IOB约束1、在约束文件中加入下面约束&#xff1a;2、直接在代码中加约束&#xff0c; 三、IOB约束使用注意事项 一、什么是IOB约束 在xilinx FPGA中&#xff0c;IOB是位于IO附近的寄存器&#xff0c;是FPGA上距离IO最近的寄存器&am…...

如何统计iOS产品不同渠道的下载量?

一、前言 在开发过程中&#xff0c;Android可能会打出来很多的包&#xff0c;用于标识不同的商店下载量。原来觉得苹果只有一个商店&#xff1a;AppStore&#xff0c;如何做出不同来源的统计呢&#xff1f;本篇文章就是告诉大家如何做不同渠道来源统计。 二、正文 先看一下苹…...

大模型学习

大模型 大规模语言模型&#xff08;Large Language Model&#xff09;简称&#xff0c;具有庞大的参数规模和复杂程度的机器学习模型。在深度学习领域&#xff0c;指具有数百万到数十亿参数的神经网络模型。 优点&#xff1a; 更强大、更准确的模型性能&#xff0c;可面对复杂…...

Redis原理:IntSet

&#xff08;笔记总结自b站黑马程序员课程&#xff09; 一、结构 IntSet是Redis中set集合的一种实现方式&#xff0c;基于整数数组来实现&#xff0c;并且具备长度可变、有序等特征。 结构如下&#xff1a; typedef struct intset {uint32_t encoding; //编码方式uint32_t l…...

【已解决】Splunk 8.2.X 升级ES 后红色报警

1: 背景: 由于splunk ES 占有很大的computing resource, 所以,Splunk ES 升级到7.1.1 后,有红色的alert. 2: 解决方法: 降低iowait 的 threshold: Investigation The default threshold setting for IOWait is pre-set to a low value and may not be relevant to the …...

香橙派使用外设驱动库wiringOP 配合定时器来驱动舵机

舵机认识和硬件接线 关于舵机也是使用过很多次了&#xff0c;详见&#xff1a; 使用PWM波控制开发SG90-CSDN博客 同时再次回顾香橙派的物理引脚对应&#xff1a; 所以舵机的VCC接 2&#xff0c;GND接 6&#xff0c;PWM接 7&#xff08;此处写的是物理引脚编号&#xff09; Li…...

C++学习笔记--函数重载(2)

文章目录 1.3、Function Templates Handling1.3.1、Template Argument Deduction1.3.2、Template Argument Substitution 1.4、Overload Resolution1.4.1、Candidate functions1.4.2、Viable functions1.4.3、Tiebreakers 1.5、走一遍完整的流程1.6、Name Mangling1.7、总结 1.…...

代码随想录算法训练营Day56 || ● 583. 两个字符串的删除操作 ● 72. 编辑距离

今天接触到了真正的距离&#xff0c;但可以通过增删改操作来逼近。 问题1&#xff1a;583. 两个字符串的删除操作 - 力扣&#xff08;LeetCode&#xff09; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字…...

chrome_elf.dll丢失怎么办?修复chrome_elf.dll文件的方法

Chrome是目前最受欢迎的网络浏览器之一&#xff0c;然而有时用户可能会遇到Chrome_elf.dll丢失的问题。该DLL文件是Chrome浏览器的一个重要组成部分&#xff0c;负责启动和管理程序的各种功能。当Chrome_elf.dll丢失时&#xff0c;用户可能无法正常启动Chrome或执行某些功能。本…...

代码随想录32|738.单调递增的数字,968.监控二叉树,56. 合并区间

738.单调递增的数字 链接地址 class Solution { public:int monotoneIncreasingDigits(int n) {string str to_string(n);int flag str.size();for (int i str.size() - 1; i > 0; i--) {if (str[i] < str[i - 1]) {str[i - 1] - 1;flag i;}}for (int j flag; j <…...

BIO NIO AIO演变

Netty是一个提供异步事件驱动的网络应用框架&#xff0c;用以快速开发高性能、高可靠的网络服务器和客户端程序。Netty简化了网络程序的开发&#xff0c;是很多框架和公司都在使用的技术。 Netty并非横空出世&#xff0c;它是在BIO&#xff0c;NIO&#xff0c;AIO演变中的产物…...

JVM GC垃圾回收

一、GC垃圾回收算法 标记-清除算法 算法分为“标记”和“清除”阶段&#xff1a;标记存活的对象&#xff0c; 统一回收所有未被标记的对象(一般选择这种)&#xff1b;也可以反过来&#xff0c;标记出所有需要回收的对象&#xff0c;在标记完成后统一回收所有被标记的对象 。它…...

【数据结构】队列知识点总结--定义;基本操作;队列的顺序实现;链式存储;双端队列;循环队列

欢迎各位看官^_^ 目录 1.队列的定义 2.队列的基本操作 2.1初始化队列 2.2判断队列是否为空 2.3判断队列是否已满 2.4入队 2.5出队 2.6完整代码 3.队列的顺序实现 4.队列的链式存储 5.双端队列 6.循环队列 1.队列的定义 队列&#xff08;Queue&#xff09;是一种先…...

嵌入式学习之链表

对于链表&#xff0c;要重点掌握链表和数组区别和实现&#xff0c;链表静态添加和动态遍历&#xff0c;链表中pointpoint-next,链表节点个数的查找&#xff0c;以及链表从指定节点后方插入新节点的知识。...

静态代理和动态代理笔记

总体分为: 1.静态代理: 代理类和被代理类需要实现同一个接口.在代理类中初始化被代理类对象.在代理类的方法中调 用被代理类的方法.可以选择性的在该方法执行前后增加功能或者控制访问 2.动态代理: 在程序执行过程中,实用JDK的反射机制,创建代理对象,并动态的指定要…...

[SM6225][Android13]user版本默认允许root和remount

开发平台基本信息 芯片: 高通SM6225版本: Android 13kernel: msm-5.15 问题描述 刚刚从Framework踏入性能的小殿堂&#xff0c;User版本默认是不会开启root权限的&#xff0c;而且一般调试需要设置一下CPU GPU DDR performance模式或者修改一些schedule util等调核调频节点去…...

pyinstaller打包exe,使用wexpect的问题

参考github首先打包wexpect 1.进入wexpect目录执行 pyinstaller __main__.py -n wexpect 会生成dist文件夹 2.python代码A.py中使用wexpect&#xff0c;注意wexpect.spawn前后必须按照下面添加代码 import sys,os,wexpect #spawn前 real_executable sys.executable try:if sy…...

OpenCV(三十三):计算轮廓面积与轮廓长度

1.介绍轮廓面积与轮廓长度 轮廓面积&#xff08;Contour Area&#xff09;是指轮廓所包围的区域的总面积。通常情况下&#xff0c;轮廓面积的单位是像素的平方。 轮廓长度&#xff08;Contour Length&#xff09;又称周长&#xff08;Perimeter&#xff09;&#xff0c;表示轮廓…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...