git系统学习

news2024/11/16 8:37:47

git系统学习

    • git命令行
      • 获取git 版本号
    • 创建初始版本库
      • 创建git库
      • 初始化用户名和密码
      • 查看用户名和邮箱
      • 修改用户名和密码
    • 将文件添加到版本库中
    • 删除暂存文件
    • 提交代码
    • 查看提交信息
      • 查看更加详细的信息
      • 查看提交差异
      • 版本库内文件的删除和重命名
        • 删除库里的文件
        • 重命名库里的文件
    • 打标签
      • 查看标签
    • 配置文件
    • 创建分支
      • 查看分支
      • 切换分支
      • 创建并切换分支
      • 删除分支
    • diff
      • 路径显示的git diff
    • 合并
    • 更改提交
      • 使用git reset

git命令行

usage: git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--config-env=<name>=<envvar>] <command> [<args>]

These are common Git commands used in various situations:

start a working area (see also: git help tutorial)
   clone     Clone a repository into a new directory
   init      Create an empty Git repository or reinitialize an existing one

work on the current change (see also: git help everyday)
   add       Add file contents to the index
   mv        Move or rename a file, a directory, or a symlink
   restore   Restore working tree files
   rm        Remove files from the working tree and from the index

examine the history and state (see also: git help revisions)
   bisect    Use binary search to find the commit that introduced a bug
   diff      Show changes between commits, commit and working tree, etc
   grep      Print lines matching a pattern
   log       Show commit logs
   show      Show various types of objects
   status    Show the working tree status

grow, mark and tweak your common history
   branch    List, create, or delete branches
   commit    Record changes to the repository
   merge     Join two or more development histories together
   rebase    Reapply commits on top of another base tip
   reset     Reset current HEAD to the specified state
   switch    Switch branches
   tag       Create, list, delete or verify a tag object signed with GPG

collaborate (see also: git help workflows)
   fetch     Download objects and refs from another repository
   pull      Fetch from and integrate with another repository or a local branch
   push      Update remote refs along with associated objects
git命令含义
add添加修改的文件,如果改的比较多用 “.”
bisect使用二进制搜索来查找引入bug的提交
branch列出、创建或删除分支
checkout命令用于在不同的分支之间切换、恢复文件、创建新分支等操作。git2.23以后引入了 git switch 和 git restore 命令
clone将存储库克隆到新目录中,从服务器下载代码用的
commit记录对存储库的更改
diff显示提交之间的变化,提交和工作树等
fetch从另一个存储库下载对象和引用
grep打印与图案匹配的行
init创建一个空的Git存储库或重新初始化一个现有的Git存储库
log显示提交日志
merge将两个或多个发展历史连接在一起
mv移动或重命名文件、目录或符号链接
pull从另一个存储库或本地分支获取并与之集成,下载新的代码
push更新远程引用和相关对象更新远程引用和相关对象,提交代码
rebase在另一个基本提示之上重新应用提交
reset将当前HEAD重置为指定状态
rm从工作树和索引中删除文件
show展示各种类型的对象
status显示工作树状态
tag创建、列出、删除或验证使用GPG签名的标签对象
restore恢复工作树文件
switch切换分支

上面是部分的命令,想要得到完成的命令列表可以使用git help -all命令。

获取git 版本号

git --version
在这里插入图片描述

创建初始版本库

创建git库

新建一个新的文件夹进入后输入
git init 创建一个.git的隐藏目录

初始化用户名和密码

然后创建用户名和邮箱

git config --global user.name "用户名"
 git config --global user. Email "邮箱"

查看用户名和邮箱

git config --list
在最下面就可以看到。

修改用户名和密码

git config user.name 修改后的用户名
git config user. email 修改后的邮箱

将文件添加到版本库中

在这里插入图片描述
在git库中新建一个文件夹里面存放一个main.cpp的文件。

git add .		//将本目录下所有修改的文件添加到库中
git status			//查看git状态

在这里插入图片描述
这里就说已经添加到库中了。这里只是暂存到库中,还没有正式的提交,正式提交使用commit这个命令,这个命令是需要编写提交log的。add这个只是一个中间暂存文件,如果确认修改好了,就可以提交了,要不然提交的过于频繁。

删除暂存文件

在这里插入图片描述
目前暂存库中有两个文件,一个是C_add.cpp一个是main.cpp我想删除C_add.cpp

git rm --cached .\src\C_add.cpp

可以使用rm命令--cached这是是子命令,缓存的意思,意思是删除缓存中的文件。
在这里插入图片描述
这里只是删除了暂存库中的文件,本地文件并没有删除。文件中的内容也不会被改动。

提交代码

git commit -m "新建项目"

需要注意的是-m和后面的log必须写
在这里插入图片描述
再看一下git状态
在这里插入图片描述
刚才暂存的文件已经提交了。

查看提交信息

git log

在这里插入图片描述
条目按照从新到最老的顺序罗列出来了。
每个条目都有提交作者的名字,和email地址,提交日期,变更的日志信息和提交的内部识别码。
其中作者名字和email地址就是在初始化git库的时候设置的。

查看更加详细的信息

在这里插入图片描述

git show 8dca406b7b795cdb8cc89b482c69596f18527e10

8dca406b7b795cdb8cc89b482c69596f18527e10这个就是git内部识别码
如果直接git show输出的就是最近一次的提交信息。

查看提交差异

git diff 8dca406b7b795cdb8cc89b482c69596f18527e10  bcda568437100cf99a9d4ccf5ce2d100c926f58e 

在这里插入图片描述
需要注意的是diff后面的识别码旧的识别码在前新的识别码在后面
绿色的加号后面就是修改的内容。

版本库内文件的删除和重命名

查看库里有那些文件

git ls-files

在这里插入图片描述

删除库里的文件

我要删除C_add.cpp

git rm ./src/C_add.cpp
git commit -m "删除了C_add.cpp"

./src/C_add.cpp 这个参数就是通过git ls-files查看到的。
需要注意的是,删除库中的文件,本地文件也会被删除掉。删除玩还需要commit提交一下代码。

在这里插入图片描述

重命名库里的文件

最简单的方式。
git mv .\src\files.cpp .\src\FFiles.cpp
但是任然要实行 commit命令。
这样本地文件就会被重命名。

重命名库里的文件通常思路就是:

  1. 重命名本地文件
  2. 然后删除库里的文件
  3. 最后提交更新的文件
mv .\src\myadd.cpp .\src\files.cpp
git rm .\src\myadd.cpp
git add .
git commit -m "add.cpp to files.cpp"

在这里插入图片描述

打标签

git tag -m "version 1.0.0" V1.0 42b0a2923a2879cafd220c7274cfd89ee70af174

“version 1.0.0” 这个参数是标签log, V1.0是版本号。

查看标签

git tag

在这里插入图片描述

配置文件

.git/config		//位置在下载代码目录下的 .git 目录下
~/.gitconfig	// linux系统在Home下, windows系统在C盘用户目录下。

创建分支

理论上分支的名字是任意的,默认分支是master,大多数开发者在这个分支上保持版本中最强大和最可靠的开发线。
为了支持可扩展性和分类管理组织,可以创建一个带层次的分支名。
例如:

  • 修复bug的分支可以创建 bug/001 bug/pr-123
  • 增加新功能可以创建newFunc/qa002

这样看到分支名称就可以知道这个分支是干什么的。

分支名不能用的字符:

  • 不能以/结尾,但是可以出现在中间
  • 分支名不能-开头
  • 以斜杠分割的组件不能以.开头(./是当前目录的意思,不能连着用)
  • 分支名任何地方都不能出现..
  • 不能出现任何空格或其他空字符
  • 不能包含~ ^ : ? * [,因为git支持通配符这些都不能用。
  • ASCII码,小于八进制的\040\177不能使用
git branch bug/pr-001 630f582d51f4e8cac3f822053b7dca0c9a619db7 // bug/pr-001 分支名,后面的是ID

查看分支

git branch 是查看分支的命令
在这里插入图片描述
git show-branchgit branch显示的更加详细。
在这里插入图片描述

git show-branch bug/pr-001 查看bug/pr-001的提交记录。

切换分支

两种方式:
在这里插入图片描述
当前分支是mater,新版本的git使用

git switch bug/pr-001

在这里插入图片描述
老版本的git使用:

git checkout master

在这里插入图片描述

创建并切换分支

git switch -C  bug/pr-003 630f582d51f4e8cac3f822053b7dca0c9a619db7
git checkout -b  bug/pr-004 630f582d51f4e8cac3f822053b7dca0c9a619db7
完全等价与
git branch  bug/pr-003 630f582d51f4e8cac3f822053b7dca0c9a619db7
git switch(checkout)  bug/pr-003

删除分支

不能删除当前使用的分支。
删除当前的分支将导致git无法确定工作目录树应该是什么样子的。

git branch -d bug/pr-004

在这里插入图片描述

diff

git diff 命令进行树的比较时2可以通过提交名,分支名,或者标签名。

git diff 

会显示当前目录中那些文件进行了修改。
在这里插入图片描述
如果这条命令有输出,说明工作目录中已经编辑或修改的东西没有暂存。

git diff --cached    
git diff --cached .\src\main.cpp		//查看单个文件的

查看暂存文件的差异。如果提交了代码这个命令输出就是空的。

git diff master .\src\main.cpp

我当前的使用的分支是bug/pr-001 我想与master的文件进行比较
在这里插入图片描述

路径显示的git diff

~5是最近5次提交

git diff --stat master~5 master

在这里插入图片描述
如果只想看src文件下的变化

git diff --stat master~5 master src

在这里插入图片描述
只想看main.cpp的差异

git diff --stat master~5 master .\src\main.cpp  

在这里插入图片描述

合并

git 支持同时合并三个四个或多个分支,但是大多数情况下一次只合并两个分支。
当一个分支修改与另外一个分支不冲突的时候,git会计算合并结果,并创建一个新的提交代表新的统一状态。当分支发生冲突的时候,git并不解决 冲突,这通常出现在多人对同一文件进行修改,git会把这种争议的文件在索引中定义为“未合并”。留给开发人员处理。
合并 bug/pr-002

git merge bug/pr-002

更改提交

作为一般原则,只要没有其他开发人员已经获得你的版本库的副本,你就可以自由的修改和完善版本库提交历史记录。或者说,只要没人有版本库中某个分支的副本,你就可以修改该分支。
如果一个分支已经公开了,并且可能已经存在与其他版本库中,那就不应该重写,修改或更改该分支的任何部分。

使用git reset

git reset命令会把版本库和工作目录改变为已知状态。具体而言git reset调整HEAD引用指向给定的提交,默认情况下还会更新索引以匹配该提交。git reset命令也可以修改工作目录以呈现给定提交代表的项目修订版本。
可以把git reset当成“破坏性的”,因此可以覆盖并销毁工作目录中的修改。事实上数据可能丢失,即使备份了文件,也可能无法恢复。此命令的重点为HEAD,索引和工作目录建立与恢复已知的状态。

git reset命令有三个主要选项: --soft, --mixed, --hard

选项HEAD索引工作目录
–soft
–mixed
–hard

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

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

相关文章

【RunnerGo】离线安装成功版本

目录 一、下载 二、解压安装包 三、修改安装配置 3.1 编辑修改安装参数&#xff08;我没有改&#xff0c;默认安装即可&#xff09; 3.2 安装目录结构说明 四、执行安装 五、检查服务并使用 六、访问 前言&#xff1a;最近在调研一个新工具&#xff0c;发现RunnerGo&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑通信-物理耦合的有源配网故障后协调恢复策略 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

SpringBoot banner 推荐

看看我这个怎么样 效果图 在resources下面创建一个banner.txt&#xff0c;把下面代码放到进去就可以用了 ${AnsiColor.GREEN} Application Version: ${ruoyi.version} Spring Boot Version: ${spring-boot.version}69696969 696969696969 696969 …

Facebook的技术创新:如何改变社交网络的面貌

Facebook作为全球最大的社交网络平台之一&#xff0c;一直在不断推动技术创新&#xff0c;以提升用户体验和社交互动质量。这些技术创新不仅改变了人们的社交方式&#xff0c;也深刻影响了整个社交网络的面貌。 人工智能驱动的内容推荐 Facebook利用人工智能&#xff08;AI&am…

深圳市光明区副区长彭颖一行莅临立仪科技参观考察

2024年8月5日上午&#xff0c;‌深圳市光明区彭颖副区长一行领导莅临深圳立仪科技有限公司调研指导工作&#xff0c;深圳市智能传感行业协会执行会长姜勇以及协会秘书长张喻陪同调研。我公司总经理刘杰波、以及各部门负责人陪同参加。 彭颖副区长一行领导在刘总的接待和讲解下&…

vue实现页面中点击预览报告,实现将vue组件变成pdf文件进行弹窗展示

一.实现效果 页面中点击预览报告&#xff0c;实现将vue组件变成pdf文件进行弹窗展示 定义的方法文件 import html2canvas from "html2canvas"; import jsPDF, { RGBAData } from "jspdf";/** a4纸的尺寸[595.28,841.89], 单位毫米 */ const [PAGE_WIDT…

微深节能 环形运动机械定位控制系统 格雷母线

格雷母线定位系统作为一种高精度、无磨损的非接触式位置检测系统&#xff0c;特别适用于环形运动机械的定位控制。 一、格雷母线定位系统的概述 格雷母线定位系统主要由一台地面电气柜、一台车载电气柜、格雷母线以及天线箱等组成。其核心部件是格雷母线&#xff0c;一种特殊的…

深度学习人脸表情识别结课作业留存

0.前言 大三下学期学习了深度学习神经网络的课程&#xff0c;老师留下了人脸表情识别的结课作业&#xff0c;在网上找到了一个想相对不错的开源项目作为基础完成了本次的结课作业。 1.项目链接 Challenges in Representation Learning: Facial Expression Recognition Chall…

运动耳机怎么选?来看看奥运冠军喜欢的运动耳机!

在奥运的竞技舞台上&#xff0c;每一次心跳的跃动都是对自我极限的勇敢挑战&#xff0c;运动员的每一个动作背后&#xff0c;都承载着不懈的努力与对梦想的执着追求。如今&#xff0c;运动科技正以前所未有的速度改变着我们的运动方式&#xff0c;一款优秀的运动耳机成为了连接…

Prompt Fuzzer:用于增强 GenAI 应用程序的开源工具

Prompt Fuzzer 是一个开源工具&#xff0c;可以评估GenAI应用程序的系统提示针对基于动态 LLM 的威胁的安全性。 Prompt Fuzzer 功能&#xff1a; 1. 模拟十几种类型的 GenAI 攻击。 2. 该工具会根据系统提示自动进行情境化&#xff0c;针对与 GenAI 应用程序相关的特定主题或行…

【Python机器学习】回归——用线性回归找到最佳拟合直线

线性回归的优缺点&#xff1a; 优点&#xff1a;结果易于理解&#xff0c;计算上不复杂 缺点&#xff1a;对非线性的数据拟合不好 使用数据类型&#xff1a;数值型和标称型数据。 回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式。例如预测汽…

【C语言】预处理详解(上)

文章目录 前言1. 预定义符号2. #define 定义常量3. #define定义宏4. 带有副作用的宏参数5. 宏替换的规则 前言 在讲解编译和链接的知识点中&#xff0c;我提到过翻译环境中主要由编译和链接两大部分所组成。 其中&#xff0c;编译又包括了预处理、编译和汇编。当时&#xff0c…

【Windows系统开机后识别不到屏幕适配的分辨率导致屏幕无法点亮的解决办法】

问题原因分析&#xff1a; 屏幕驱动板出现故障&#xff0c;驱动出现缺失&#xff0c;未对主板系统进行适配兼容。使用的屏幕分辨率非常小众&#xff0c;系统中没有这个分辨率&#xff0c;识别不到屏幕适配的分辨率后导致屏幕无法点亮。 解决方法&#xff1a; 找主板厂家增加…

CVE-2022-33891漏洞复现

简介 Spark 是用于大规模数据处理的统一分析引擎。它提供了 Scala、Java、Python 和 R 中的高级 API&#xff0c;以及支持用于数据分析的通用计算图的优化引擎。它还支持一组丰富的高级工具&#xff0c;包括用于 SQL 和 DataFrames 的 Spark SQL、用于 Pandas 工作负载的 Spar…

【每日刷题】Day94

【每日刷题】Day94 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 33. 搜索旋转排序数组 - 力扣&#xff08;LeetCode&#xff09; 2. 1290. 二进制链表转整数 - 力扣…

科普文:微服务之万字详解分布式事务原理、协议及其框架

一、分布式事务 首先奉上一张关于事务的相关概念图&#xff0c;给大家做个总览&#xff1a; 1.1 名词解释 事务&#xff1a;事务是由一组操作构成的可靠的独立的工作单元&#xff0c;事务具备ACID的特性&#xff0c;即原子性、一致性、隔离性和持久性。本地事务&#xff1a;当…

树莓派4B部署及测试llamafile

llamafile项目简介 很多初学者学习大语言模型的时候,都会被模型文件中一大堆复杂的python文件或者cuda配置劝退,为了方便更多的零基础的初学者体验大语言模型,llamafile 提出了单文件运行大模型的方案。 GitHub - Mozilla-Ocho/llamafile: Distribute and run LLMs with a…

网络原理(1)——基本概念

1. 网络互连 随着时代的发展&#xff0c;越来越需要计算机之间相互通信&#xff0c;共享软件和数据&#xff0c;以多个计算机协同工作来完成业务&#xff0c;就有了网络互连 网络互连&#xff1a;将多台计算机连接在一起&#xff0c;完成数据共享 数据共享本质是网络数据传输…

中空板式陶瓷膜的高可靠性

中空板式陶瓷膜是一种先进的液固分离材料&#xff0c;具有诸多优点和广泛的应用领域。以下是对中空板式陶瓷膜的详细介绍&#xff1a; 一、产品特点 物理特性优越&#xff1a;中空板式陶瓷膜通常采用刚玉等无机材料为原材料&#xff0c;经过高温烧制而成&#xff0c;具有高强度…

数据结构实验:树和二叉树(附c++源码:实现树有关算法)

目录 一、实验目的 二、问题分析及数据结构设计 三、算法设计&#xff08;伪代码表示&#xff09; 1. 输入字符序列 创建二叉链表 2. 递归前序遍历 3. 递归中序遍历 4. 递归后序遍历 5. 非递归前序遍历 6. 非递归中序遍历 7. 非递归后序遍历 8. 层次遍历 9. 求二叉…