git系统学习

news/2024/9/17 19:09:19/ 标签: git, 学习

git系统学习

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

git_2">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__73">获取git 版本号

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

创建初始版本库

git_77">创建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_290">路径显示的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_318">使用git reset

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

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

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

http://www.ppmy.cn/news/1507168.html

相关文章

Linux Shell编程--数组

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除&#xff01; 一、简介 Shell 脚本中的数组允许你存储多个值&#xff0c;并可以通过索引访问它们。Shell 中的数组是一维的。 二、声明数组 在Shell…

鸿蒙HarmonyOS开发:多种内置弹窗及自定义弹窗的详细使用指南

文章目录 一、消息提示框&#xff08;showToast&#xff09;1、导入模块2、语法3、参数4、示例5、效果 二、对话框&#xff08;showDialog&#xff09;1、导入模块2、语法3、参数4、示例5、效果 三、警告弹窗&#xff08;AlertDialog&#xff09;1、语法2、参数3、AlertDialogP…

docker安装redis单机部署的redis.conf配置

下面是一个简单的 Redis 配置文件 (redis.conf) 示例&#xff0c;它适合docker单机部署环境&#xff0c;并且启用了密码保护。这个配置文件包含了最基本的设置&#xff0c;您可以根据需要进行扩展。 # 服务器监听的地址 bind 0.0.0.0# 服务器监听的端口 port 6379# 设置密码 r…

期权价格的奥秘:深入理解影响因素

在金融市场中&#xff0c;期权作为一种衍生工具&#xff0c;为投资者提供了风险管理和资产增值的多种可能性。期权价格的波动往往令人着迷&#xff0c;但其背后的定价机制却充满了复杂性。本文将带您探索期权价格变化的奥秘&#xff0c;并尝试以浅显易懂的方式&#xff0c;解析…

Oceanbase 执行计划

test100 CREATE TABLE `test100` ( `GRNT_CTR_NO` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同编号, `GRNT_CTR_TYP` varchar(3) COLLATE utf8mb4_bin NOT NULL COMMENT 担保合同类型, `COLC_GRNT_IND` varchar(1) COLLATE utf8mb4_bin DEFAULT NULL …

1.Windows安装Maven和搭建Nexus私服

一、Windows安装Maven 首先安装jdk。这个没什么说的。接着安装Maven 下载Maven的安装包&#xff0c;解压到 D:\apache-maven-3.5.2 然后新建用户环境变量M2_HOME&#xff1a; 接着编辑用户环境变量Path&#xff0c;增加%M2_HOME%\bin&#xff08;下图中少写了一个%&#xff…

Postman接口测试工具使用方法

Postman 是一个强大的 API 开发和测试工具&#xff0c;广泛用于开发、测试和文档编写。 安装 Postman&#xff1a; 前往 https://www.postman.com/ 官网 下载适用于你的操作系统的安装包。安装完成后&#xff0c;启动 Postman。 创建账户&#xff08;可选&#xff09;&#…

视频号直播回放怎么下载?

一、如果是下载自己直播回放视频&#xff1a; 方法一&#xff1a;视频号助手 打开网址&#xff1a;视频号助手 登陆账号后。下面路径&#xff0c;先点击成回放&#xff0c; 后就可以在下面路径&#xff0c;下载全场回放 但是这种有个缺点&#xff0c;就是不能分段下载。这样…

【ES6】使用Set和Map进行全组合判断

判断数据集是否为全组合关系 例如下列表格&#xff0c;字段1包含&#xff08;甲、乙&#xff09;值&#xff0c;字段2包含&#xff08;a、b&#xff09;值&#xff0c;字段3包含&#xff08;1、2、3&#xff09;值&#xff0c;每种组合情况都可以在数据集的行记录中找到有且仅…

QT实现一个系统参数管理窗口

为了实现一个管理系统参数的设计&#xff0c;我们可以创建一个配置参数类来封装配置的读取和写入操作&#xff0c;并使用一个 QWidget 作为用户界面来管理这些参数。以下是如何设计一个这样的系统&#xff0c;包括配置参数类和管理界面。 1. 配置参数类 我们创建一个 ConfigM…

数据库篇--八股文学习第十八天| MySQL和Redis的区别是什么;Redis有什么优缺点?为什么用Redis查询会比较快

1、MySQL和Redis的区别是什么 答&#xff1a; Redis基于键值对&#xff0c;支持多种数据结构&#xff1b;而MySQL是一种关系型数据库&#xff0c;使用表来组织数据。Redis将数据存在内存中&#xff0c;通过持久化机制将数据写入磁盘&#xff0c;MySQL通常将数据存储在磁盘上。…

Ubuntu安装 IDEA

一、在官网下载 IDEA 下载IDEA For LinuxDownload the latest version of IntelliJ IDEA for Windows, macOS or Linux.https://www.jetbrains.com/idea/download/?sectionlinux下载好的安装包解压到/opt/中&#xff0c;目录名更改为 idea 二、对/opt/idea 目录下所有文件授予…

Java开发工具IDEA

IDEA概述 Intellij IDEA IDEA全称Intellij IDEA&#xff0c;是用于Java语言开发的集成环境&#xff0c;它是业界公认的目前用于Java程序开发最好的工具。 集成环境 把代码编写&#xff0c;编译&#xff0c;执行&#xff0c;调试等多种功能综合到一起的开发工具。 IDEA下载和安…

Unity自带的UGUI ScrollView刷新不及时问题

self:RefreshCommentsList()self.scrollView self.CommentsView:GetComponent(ScrollRect) self.scrollView.verticalNormalizedPosition 0如上所示&#xff0c;当我想刷新Unity中的一个ScrollView的列表后&#xff0c;将这个列表瞬间移至底部。但是上述这三行代码会出现一个…

关于网络数据的一些思考

为了给游戏用户带来更好的体验&#xff0c;但又想兼顾稳定性&#xff0c;因此有了kcp这样的技术&#xff0c;可如果是面临海外产品这是远远不够的 不同国家&#xff0c;不同地区&#xff0c;不同企业&#xff0c;不同用户所使用的设备千奇百怪。甚至与安装师傅的配置也有关系。…

支持二次开发的在线客服系统-高性能客服程序源码

首先&#xff0c;咱们这个客服系统是用 Go 语言开发的&#xff0c;Go 语言是 Google 大佬们搞出来的&#xff0c;它特别适合写并发程序&#xff0c;性能杠杠的。 如果你想改前端页面&#xff1a; 咱们的前端页面是用 HTML、CSS、JavaScript 这些传统技术做的&#xff0c;不是…

第一章 NoSQL之Redis配置与优化

关系数据库与非关系型数据库 关系型数据库 一个结构化的数据库&#xff0c;创建在关系模型基础上一般面向于记录包括Oracle、MySQL、SQLServer、Microsoft Access、DB2等 非关系型数据库 除了主流的关系型数据库外的数据库&#xff0c;都认为是非关系型包括Redis、MongoDB、…

【QML】Qt.rgba()的正确使用方法

1. 问题 设置颜色 color: Qt.rgba(65,105,225,255) &#xff0c;应该是蓝色&#xff0c;却显示白色。 2. 正确方法 //正确代码 color: Qt.rgba(65/255, 105/255, 225/255, 255/255)

如何在 K8s 中实现指定数据库实例下线?

上期文章介绍了 InstanceSet&#xff0c;同时也介绍了 InstanceSet 针对数据库高可用等需求衍生出的一系列特性。本期我们将介绍 指定实例下线 这一特性&#xff0c;一起来了解这一特性诞生的背景和使用方式吧&#xff5e; 指定实例下线解决了什么问题&#xff1f; 早期版本中…

Cisco ACL 中的通配符掩码详解

注&#xff1a;机翻&#xff0c;未校。 Wildcard Masks in ACLs Explained This tutorial explains what the ACL wildcard masks are and how they are used. Learn the differences and similarities between wildcard masks and subnet masks. 本教程介绍了什么是 ACL 通配…