git系统学习

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 directoryinit      Create an empty Git repository or reinitialize an existing onework on the current change (see also: git help everyday)add       Add file contents to the indexmv        Move or rename a file, a directory, or a symlinkrestore   Restore working tree filesrm        Remove files from the working tree and from the indexexamine the history and state (see also: git help revisions)bisect    Use binary search to find the commit that introduced a bugdiff      Show changes between commits, commit and working tree, etcgrep      Print lines matching a patternlog       Show commit logsshow      Show various types of objectsstatus    Show the working tree statusgrow, mark and tweak your common historybranch    List, create, or delete branchescommit    Record changes to the repositorymerge     Join two or more development histories togetherrebase    Reapply commits on top of another base tipreset     Reset current HEAD to the specified stateswitch    Switch branchestag       Create, list, delete or verify a tag object signed with GPGcollaborate (see also: git help workflows)fetch     Download objects and refs from another repositorypull      Fetch from and integrate with another repository or a local branchpush      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.rhkb.cn/news/397040.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重启人生计划-大梦方醒

&#x1f973;&#x1f973;&#x1f973; 茫茫人海千千万万&#xff0c;感谢这一刻你看到了我的文章&#xff0c;感谢观赏&#xff0c;大家好呀&#xff0c;我是最爱吃鱼罐头&#xff0c;大家可以叫鱼罐头呦~&#x1f973;&#x1f973;&#x1f973; 从今天开始&#xff0c;我…

MybatisPlus——扩展功能(一)

扩展功能 1.代码生成 在使用MybatisPlus以后&#xff0c;基础的Mapper、Service、PO代码相对固定&#xff0c;重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用&#xff0c;也很麻…

软考高级:真实的程序、核心程序、小型基准程序、合成基准程序

一、AI 讲解 这段内容描述了在软件测试或性能测试中&#xff0c;不同类型程序的测试精确度排名。 测试类型说明精确度排名真实的程序直接测试实际运行的软件或系统&#xff0c;能够反映真实的使用场景1核心程序测试系统或应用的核心模块或功能&#xff0c;虽然范围较小但仍具…

使用Selenium调试Edge浏览器的常见问题与解决方案

背景介绍 在当今互联网时代&#xff0c;网页爬虫已经成为数据获取的重要手段。而Selenium作为一款功能强大的自动化测试工具&#xff0c;被广泛应用于网页爬取任务中。虽然Chrome浏览器是Selenium用户的常见选择&#xff0c;但在某些工作环境中&#xff0c;我们可能需要使用Ed…

运行时数据区

运行时数据区 方法区 Method Area&#xff0c;用于存储已被虚拟机加载的类信息&#xff08;、、&#xff09;、常量、静态变量、即时编译后的代码等数据线程公用类信息 类型信息&#xff1a;类class、接口interface、注解annotation、枚举enum域Field信息&#xff1a;字段名称、…

某MDM主数据管理系统与微软Dynamic CRM系统(新加坡节点)集成案例

一、项目背景 某客户需要将物料和配件等主数据和海外系统进行对接&#xff0c;由SAP PO在中间对接海外系统&#xff0c;进行主数据的下发&#xff0c;方便两端系统之间进行对接&#xff0c;集团统一性管理国内海外数据&#xff0c;提高整体业务效率&#xff0c;保证数据的时…

基于Java中的SSM框架实现在线收银系统项目【项目源码+论文说明】

基于Java中的SSM框架实现在线收银系统演示 摘要 科技的力量总是在关键的地方改变着人们的生活&#xff0c;不仅如此&#xff0c;我们的生活也是离不开这样或者那样的科技改变&#xff0c;有的消费者没有时间去商场购物&#xff0c;那么电商和快递的结合让端口到消费者的距离不…

气膜建筑的抗风与防火性能:保障仓储的安全—轻空间

气膜建筑以其独特的结构和材料优势&#xff0c;为仓储设施提供了可靠的安全保障。在应对自然灾害特别是强风和火灾时&#xff0c;气膜建筑展示了优异的抗风和防火性能。轻空间将详细探讨这些性能及其在实际应用中的表现。 气膜建筑的抗风能力源于其特殊的结构设计和高性能材料。…

ZLM+wvp-pro使用错误记录

这里千万不要写127.0.0.1 在同步国标同步的时候&#xff0c;会出现接口不可达。以下是抓包工具抓的内容 这个时候就很奇怪了&#xff0c;这是为什么呢&#xff0c;这个时候我们通过telnet来判断一下&#xff0c;会发现端口占用&#xff0c;那么这个时候为什么说端口不可达。。。…

一站搞定原型链:深入理解JavaScript的继承机制

目录 一站搞定原型链&#xff1a;深入理解JavaScript的继承机制 一、基本概念 1. 对象与原型 2. 构造函数 二、原型链 三、原型链的终点 四、原型链的构造 1. 创建对象 2. 原型对象的原型 五、继承 1. 原型继承 2. Class 语法糖 六、总结 作者&#xff1a;watermel…

冥想第一千二百四十八天(12478)

1.今天周日&#xff0c;被今天的天气治愈了&#xff0c;空气特别的好。 2.先去游泳了1个小时&#xff0c;中午和家人一起吃饭。 3.下午没再出去了。给溪溪桐桐洗了澡。 4.感谢父母&#xff0c;感谢朋友&#xff0c;感谢家人&#xff0c;感谢不断进步的自己。

Linux应用层开发(7):网络编程

互联网对人类社会产生的巨大变革&#xff0c;大家是有目共睹的&#xff0c;它几乎改变了人类生活的方方面面。互联网通信的本质是数字通信&#xff0c;任何数字通信都离不开通信协议的制定&#xff0c;通信设备只有按照约定的、统一的方式去封装和解析信息&#xff0c;才能实现…

STM32的USB接口介绍

STM32 USB接口是STM32微控制器系列中集成的一种通信接口&#xff0c;它允许STM32微控制器与外部设备或计算机进行高速的数据传输和通信。以下是STM32 USB接口的简要介绍&#xff1a; 1. 接口类型 STM32的USB接口通常支持USB 2.0标准&#xff0c;部分高端型号可能还支持USB 3.…

LVS负载均衡集群部署之—NAT模式的介绍及搭建步骤

一、环境准备 1.准备三台rhel9服务器 服务器名称 主机名 ip地址备注LVS调度服务器lvs.timinglee.org eth0:172.25.254.100&#xff08;外网&#xff09; eth1:192.168.0.100(内网) 关闭selinux和防火墙webserver2网站服务器webserver1.timinglee.orgeth0&#xff1a;192.168.…

一行实现88个群智能算法优化混合核极限学习机HKELM的多特征输入单输出的数据回归预测Matlab程序全家桶

一行实现88个群智能算法优化混合核极限学习机HKELM的多特征输入单输出的数据回归预测Matlab程序全家桶 文章目录 前言一行实现88个群智能算法优化混合核极限学习机HKELM的多特征输入单输出的数据回归预测Matlab程序全家桶 一、HKELM模型1. 极限学习机&#xff08;ELM&#xff0…

【exgcd 扩展欧几里得算法】[ABC340F] S = 1 题解

题意 给定 ( X , Y ) (X,Y) (X,Y)&#xff0c;其中 X , Y X,Y X,Y 为整数。求整数 A , B A,B A,B 使得由 ( 0 , 0 ) , ( X , Y ) , ( A , B ) (0,0),(X,Y),(A,B) (0,0),(X,Y),(A,B) 三个点构成的三角形面积为 1 1 1。 思路 将 ( X , Y ) , ( A , B ) (X,Y),(A,B) (X,Y)…

DC-3靶机打靶练习!!!!

先开始还是老样子我的思路&#xff1a; 外网渗透 信息收集 我们在发现了靶机的ip以及靶机开放了80端口&#xff0c;然后收集到了cms 然后去访问页面发现了是有登录口的&#xff0c;win10虚拟机进行后台目录扫描&#xff0c;主机进行弱口令爆破&#xff0c;kali在使用msf模块进…

Basic‘ attribute type should not be a container解决方法

在使用Spring Data JPA的时候&#xff0c;实体类中定义一个用List修饰的成员ip&#xff0c;IDEA会提示Basic‘ attribute type should not be a container错误&#xff0c;导致编译不通过。 查阅一些博客和文档说是Spring Data JPA这个框架会把实体类的属性当做是MySQL数据库中…

sql实战

这里写自定义目录标题 sql实战cmseasy daiqile全局污染 RCE限制16字符传入参数限制传入字符7个限制35字符&#xff0c;并过滤所有英文数字 sql实战 cmseasy 1、/lib/admin/admin.php和/lib/admin/tool/front_class.php源代码中发现&#xff0c;可以伪造IP并且传入ishtml1&…

操作符详解(内含二进制与原、反、补码知识点)--还有超详细图解!一看就会!

前言 今天给大家分享一下C语言操作符的详解&#xff0c;但在此之前先铺垫一下二进制和进制转换与原码、反码、补码的知识点&#xff0c;都有详细的图解&#xff0c;也希望这篇文章能对大家有所帮助&#xff0c;大家多多支持呀&#xff01; 目录 前言 一、二进制和进制转换 1…