Git版本控制管理

Git基础_环境配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

设置用户信息

git config --global user.name "Bandits"
git config --global user.email "gb010704@163.com"

查看配置信息

检查当前的设置

git config --list
git config user.name

注意:
通过上面的命令设置的信息会保存在~/.gitconfig文件中。

Git基础_本地初始化仓库

git init

小提示:
git init 命令会在上述目录中创建一个名为 .git 的隐藏目录,并在其中创建一个版本库。该目录为文件,查看->显示隐藏目录。

Git基础_文件的两种状态

在这里插入图片描述

注意:
Git不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和。

untracked未跟踪

未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制.通过git add 状态变为Staged.

tracked已跟踪

被纳入版本控制

  • Unmodified
    文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified,如果使用git rm移出版本库, 则成为Untracked文件。

  • Modified
    文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout则丢弃修改过,返回unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改。

  • Staged
    暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,文件状态为Modified。
    在这里插入图片描述

注意:

  • 新建文件—>Untracked
  • 使用add命令将新建的文件加入到暂存区—>Staged
  • 使用commit命令将暂存区的文件提交到本地仓库—>Unmodified
  • 如果对Unmodified状态的文件进行修改—> modified
  • 如果对Unmodified状态的文件进行remove操作—>Untracked

查看文件状态命令

git status

参数:
-s: 简洁输出

Git基础_文件加入暂存区

文件加入暂存区命令

git add 文件名

文件取消暂存区命令

git reset 文件名

Git基础_文件提交与删除

在这里插入图片描述
如果仅是通过git add命令把移动加到暂存区,还不算是完成整个流程。如果想让暂存区的内容永久保存下来,就要使用git commit命令。
在这里插入图片描述

文件提交命令

语法结构:

git commit -m "提交信息"

参数:

  • -m : 本次提交做了什么事,只要简单、清楚的文本说明即可,中英文都可以重点是说清楚,能让自己和别人很快明白就行。

如果不加m参数,会进入类似vim编辑。

修改commit记录

要改动Commit记录有几种方式。
(1)把.git目录整个删除(不建议)。
(2)使用git rebase命令来改动历史记录。
(3)先把 Commit用git reset命令删除,整理后再重新Commit。
(4)使用–amend参数改动最后一次的Commit。

使用–amend参数进行Commit

首先先查看一下我们的提交记录

git log --oneline 

此时最后一次提交的记录 写的提交信息不合理,只需要在Commit命令后面加上–amend即可

git commit --amend -m " new  message "

Git基础_删除文件

git rm 文件名

这将删除指定文件并将删除操作添加到暂存区中,然后你可以通过提交来永久删除该文件(删除掉本地仓库中文件)。
想要删除远程仓库中的文件就需要进行推送当前的分支

git push origin 分支名

Git基础_将文件添加至忽略列

一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,我们可以在工作目录中创建一个名为 .gitignore的文件(文件名称固定),列出要忽略的文件模式。

忽略规则

# / 表示 当前文件所在的目录
# 忽略public下的所有目录及文件
/public/*
#不忽略/public/assets,就是特例的意思,assets文件
不忽略
!/public/assets
# 忽略具体的文件
index.class
# 忽略所有的class
*.class
# 忽略 a.class b.class
[ab].class

注意:

  • #匹配规则和linux文件匹配一样
  • #以斜杠“/”开头表示目录
  • #以星号“*”通配多个字符
  • #以问号“?”通配单个字符
  • #以方括号“[]”包含单个字符的匹配列表
  • #以叹号“!”表示不忽略(跟踪)匹配到的文件或目录

Git基础_日志记录操作

查看日志

语法结构:

git log

参数:
–graph : 查看分支合并图
–oneline : 标记把每一个提交压缩到了一行中

获取执行过的命令

语法结构

git reflog

Git基础_比较文件差异

在这里插入图片描述
diff是指的是两个事物的不同。例如在Linux系统中,diff命令会逐行比较两个文本的差异然后显示出来。

git diff命令格式

语法结构:

git diff 

Git技术中显示暂存区和工作区文件的差异

git diff --cached 

Git技术中对比暂存区和版本库文件的差异

Git基础_还原文件

在这里插入图片描述
对于恢复修改的文件,就是将文件从仓库中拉到本地工作区,即 仓库区 ----> 暂存区 ----> 工作区。

对于修改的文件有三种情况:

  • 只是修改了文件,没有任何 Git 操作
  • 修改了文件,并提交到暂存区(即编辑之后,gitadd但没有gitadd但没有 git commit -m …)
  • 修改了文件,并提交到仓库区(即编辑之后,gitadd和gitadd和 git commit -m …)

情况I

只是修改了文件,没有任何 git 操作,直接一个命令就可回退

git checkout -- 文件名

情况II

修改了文件,并提交到暂存区(即编辑之后,git add但没有gitadd但没有 git commit )

  1. 先将暂存区的撤销掉
git reset 文件名 # 回到当前版本只是 修改未添加到暂缓区
  1. 此时在使用情况I就可以恢复
git checkout -- 文件名 # 恢复到本地仓库中的版本

情况III

修改了文件,并提交到本地仓库区

  1. 查看一下提交记录
git log --oneline
  1. 进行版本回退
git reset HEAD^
  1. 从本地仓库进行恢复
git checkout -- 文件名

注意:
git reset 版本号 ---- 将暂缓区回退到指定版本,根据 $ git log --oneline 显示的版本号,可以回退到任何一个版本,也可通过HEAD 来指定版本。

  • HEAD 当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本

Git远程仓库_常用的Git代码托管平台

常见远程仓库托管平台

我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

  • GitHub (地址: https://github.com/)是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯的版本库格式进行托管,故GitHub。
  • 码云(地址: https://gitee.com/)是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快。
  • GitLab (地址: https://about.gitlab.com/是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的we务。

Git远程仓库_注册码云账号、创建远程仓库

在这里插入图片描述

登录码云

注册完成可以使用刚刚注册的邮箱进行登录(地址:www.gitee.com/login)

创建Git远程仓库

在这里插入图片描述

在这里插入图片描述

Git远程仓库_远程仓库操作

添加远程仓库

添加一个新的远程Git仓库,同时指定一个可以引用的简写。

git remote add <shortname><url>

注意:

  • shortname :远程的名字(可以随意取名)
  • url : 远程仓库地址

查看远程仓库

git remote

克隆远程仓库

git clone  远程仓库地址url

移除无效的远程仓库

git remote rm 远程仓库名字

注意:
此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库。

Git远程仓库_推送、抓送和拉取

Git远程仓库_推送

git push 仓库名 要推送的分支名称

从远程仓库中抓取与拉取

git fetch 
git pull

注意:

  • git fetch是从远程仓库获取最新版本到本地仓库,不会自动merge,想看见文件就需要手动进行合并文件 git merge origin/master 。
  • git pull是从远程仓库获取最新版本到本地仓库,会自动merge

Git远程仓库_多人协作冲突问题

为什么会出现冲突问题

  1. 多人同时修改同一文件的相同部分
  2. 在当前分支上修改了未合并的提交

Git远程仓库_SSH协议推送

Git支持的传输协议

  • 本地协议(Local)
  • HTTPS协议
  • SSH(Secure Shell)协议
  • Git协议

什么是SSH协议

SSH为Secure Shell(安全外壳协议)的缩写,由IETF的网络小组(Network Working Group)所制定。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

配置SSH协议

1.使用命令ssh-keygen -t rsa生成公钥和私钥

ssh-keygen -t rsa

注意:
执行完成后在window本地用户.ssh目录(C:\Users\用户名.ssh)下生成如下名称的公钥和私钥。

2.复制公钥文件内容至服务器上
在这里插入图片描述

Git分支__使用分支原因

查看分支

git branch

参数:

  • -r : 列出所有远程分支
  • -a :列出所有本地分支和远程分支

创建分支

git branch 分支名字

参数:

  • -m 修改分支名字

切换分支

git checkout 分支名字

Git分支_推送至远程仓库分支

git push 远程仓库名字 分支名字

创建并切换分支

git checkout -b 分支名称

Git分支

合并分支

语法结构

git merge 要合并的分支名称

删除本地仓库分支

语法结构:

git branch -d 要删除的分支名称

参数:

  • -d 删除本地分支
    注意:
    如果要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支,如果坚持要删除此分支,可以将命令中的-d参数改为-D 。

如果不小心把还没合并的分支删除了,救得回来吗
cat分支是从master分支出去的,当前领先master分支两次Commit,而且还没有合并过。这时如果试着删掉cat分支,它会提醒:“这个分支还没全部合并哦”。

$ git branch -d cat
error: The branch 'cat' is not fully merged.
If you are sure you want to delete it, run 'git branch -D cat'.

虽然Git这么贴心的提醒了,但这里仍然把它删除了

git branch -D cat
Deleted branch cat(was b1729234)

分支只是一个指向某个Commit的指标,删除这个指标并不会使那些Commit消失。
我们可以根据这个ID创建回来这个分支

git branch new_cat b2323b

删除远程仓库分支

git push origin -d 分支名称

Git标签

标签与分支有什么区别

标签与分支的区别是,分支会随着Commit而移动,但标签不会。之前介绍过当Git往前推,进一个Commit时,它所在的分支会跟着向前移动。而标签一旦贴上去不管Commit怎么前进,标签都会留在原来贴的那个位置上。因此,分支可以看成是“会移动的标签”。

列出已有标签

语法结构

git tag 

创建标签

语法结构

git tag 标签名字

查看标签信息

语法结构

git show 标签名

标签推送到远程仓库

语法结构

git push 远程仓库名 标签名

检出标签

新建一个分支,指向某个tag

git checkout -b 新的分支名 已有的标签名

删除本地标签

语法结构

git tag -d 标签名

删除远程标签

语法结构

git push origin :refs/tags/标签名字

注意:
:refs/tags/是固定写法。

Git工作流_Git Flow是什么

Git Flow是什么

在使用Git的过程中如果没有清晰流程和规划,否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。GitFlow工作流通过为功能开发、发布准备和维护分配独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

Git Flow 的常用分支

在这里插入图片描述
解释:

  • master 主干分支,开发完成的上线的项目版本

  • hotixes 热部署分支,进行主干分支的补丁操作

  • release 预部署分支,测试工程师的调用的分支

  • develop 开发分支,开发源代码分支

  • feature 功能分支,你们调用分支

  • Master/Devlop 分支
    所有在Master分支上的Commit应该打上Tag,一般情况下Master不存在Commit,Devlop分支基于Master分支创建
    在这里插入图片描述

  • Feature 分支
    Feature分支做完后,必须合并回Develop分支, 合并完分支后一般会删点这个Feature分支,但是我们也可以保留。
    在这里插入图片描述

  • Release 分支
    Release分支基于Develop分支创建,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于开发新的Feature 发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
    在这里插入图片描述

注意:
一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支。

  • Hotfix 分支
    hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag。

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

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

相关文章

Java反射调用jar包实现多态

上一篇实现了反射调用jar包&#xff0c;但是没有实现多态&#xff0c;这次先给自己的jar包类抽象一个接口&#xff0c;然后实现类实现接口。最后调用放反射得到的对像转换成接口类型调用执行。 定义接口&#xff0c;指定包为ZLZJar package ZLZJar;public interface ITest {p…

FPGA中的LUT查找表工作原理。

在RAM中填入1110,后续的不同AB组合Y输出对应的值&#xff0c;实现上面逻辑表达式的功能。

计算机视觉开源代码汇总

1.【基础网络架构】Regularization of polynomial networks for image recognition 论文地址&#xff1a;https://arxiv.org/pdf/2303.13896.pdf 开源代码:https://github.com/grigorisg9gr/regularized_polynomials 2.【目标检测&#xff1a;域自适应】2PCNet: Two-Phase Cons…

京东数据分析:2023年下半年母婴市场各大细分赛道消费趋势盘点!

于今天的新生代父母而言&#xff0c;在诸多消费观念被改变的当下&#xff0c;新生父母们在育儿上更强调精细化&#xff0c;在这种情况下&#xff0c;母婴市场的消费升级已是大势所趋。不过&#xff0c;在如今收入增速整体放缓的背景下&#xff0c;各细分赛道的消费升级都出现了…

网络社区挖掘-图论部分的基本知识笔记

1 网络社区挖掘定义 网络社区挖掘是指利用数据挖掘技术和机器学习算法&#xff0c;分析社交网络、在线社区或互联网上的各种交互数据&#xff0c;以揭示其中隐藏的模式、关系和信息。这些社区可以是社交媒体平台、在线论坛、博客、微博等&#xff0c;人们在这些平台上进行交流…

众和策略:尾盘5分钟拉升意味着什么?

跟着投资者越来越重视股市改动&#xff0c;一些术语逐渐进入商场人员的词汇库中&#xff0c;例如“尾盘5分钟拉升”。这个概念在许多人眼中是听起来生疏的&#xff0c;但它实际上是股市生意中十分重要的一种现象。 简略来说&#xff0c;尾盘5分钟拉升是指股市在毕竟5分钟呈现了…

智能网关IOT 2050采集应用

SIMATIC IOT2050 是西门子公司新推出的应用于企业数字化转型的智能边缘计算和云连接网关。 它将云、公司内 IT 和生产连接在一起&#xff0c;专为直接在生产环境中获取、处理和传输数据的工业 IT 解 决方案而设计。例如&#xff0c;它可用于将生产 过程与基于云的机器和生产数据…

学习记录682@查准率与查全率真的必然负相关吗?

查准率和查全率定义 查准率与查全率真的必然负相关吗&#xff1f; 先说结论&#xff0c;两者并非绝对负相关&#xff0c;只是在统计学上表现出大概率的负相关性&#xff0c;而数学证明上无法严格证明两个的负相关性。 枚举来证明两者并非必然负相关 一组数据&#xff1a;A1、…

4.2 网际协议IP

思维导图&#xff1a; 前言&#xff1a; **笔记 4.2 - 网际协议IP** 1. **定义与重要性**&#xff1a; - 网际协议IP是TCP/IP体系中的核心协议之一。 - 它是互联网的关键标准协议。 2. **发展背景**&#xff1a; - 又被称为Kahn-Cerf协议。 - 由Robert Kahn和…

vue 拿到数据后,没有重新渲染视图,nuxt.js拿到数据后,没有重新渲染视图,强制更新视图

以下为Vue2的解决方案 一、 Vue.set&#xff08;&#xff09; 问&#xff1a;什么情况下使用&#xff1f; 答&#xff1a;如果你向响应式数据添加新的“属性”&#xff0c;理论上&#xff0c;一般情况下是没问题的&#xff0c;但是&#xff0c;如果你的级别比较深&#xff0c;又…

ts使用记录

1、安装&#xff1a;通过管理员权权限使用cmd或者终端全局安装 npm install -g typescript2、运行&#xff1a; 可以通过tsc命令运行hello.ts文件 tsc hello.ts3、通过vscode的run code插件去右键运行 1.先安装插件run code 2.全局安装ts-node&#xff0c;npm install -g ts-n…

深入浅出的介绍一下虚拟机VMware Workstation——part3(VMware快照)

虚拟机VMware使用 前言快照的原理快照的使用 前言 可以先查看之前的2篇博文&#xff0c;学习基础的虚拟机使用 深入浅出的介绍一下虚拟机VMware Workstation——part1 深入浅出的介绍一下虚拟机VMware Workstation——part2(详细安装与使用) 由于我们使用虚拟机的初衷就是用来…

当遇到修复错误0xc000000e时,你的电脑需要修复。如何在Windows 11/10上修复此错误

恢复错误代码0xc000000e,你的电脑需要修复,表示硬件故障或驱动器配置不正确,并可能伴随不同的错误消息,如: 所需设备未连接或无法访问 无法加载所选条目 由于应用程序丢失或损坏,无法加载所选条目 启动选择失败,因为无法访问所需的设备。 0xC000000E或STATUS_NO_SUCHDEV…

《持续交付:发布可靠软件的系统方法》- 读书笔记(五)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;五&#xff09; 第二部分——部署流水线第 5 章 部署流水线解析5.1 引言5.2 什么是部署流水线5.3 部署流水线的相关实践5.3.1 只生成一次二进制包5.3.2 对不同环境采用同一部署方式5.3.3 对部署进行冒烟测试5.3.4 向生产…

配置hpa后,target显示<unknown>/50%

背景&#xff1a; 有两个服务&#xff0c;server 负责主要后端请求&#xff0c;bill 负责计量计费请求。服务都是使用 helm 部署。测试提了一个缺陷&#xff0c;说全部服务没有配置hpa。 解决一 按照之前的代码结构添加了hpa后&#xff0c;发现&#xff1a; ➜ kubectl get…

数据结构-----红黑树的插入

目录 前言 红黑树的储存结构 一、节点旋转操作 左旋&#xff08;Left Rotation&#xff09; 右旋&#xff08;Right Rotation&#xff09; 二、插入节点 1.插入的是空树 2.插入节点的key重新重复 3.插入节点的父节点是黑色 4.插入节点的父节点是红色 4.1父节点是祖父…

IDEA启动C:\Users\badboy\.jdks\corretto-17.0.7\bin\java.exe -Xmx700m报错

出现的现象 这里没有记录当时的截图&#xff0c;主要报错如下&#xff1a; C:\Users\badboy.jdks\corretto-17.0.7\bin\java.exe -Xmx700m … Error occurred during initialization of VM Failed setting boot class path. 排查方式 遇到这种问题我首先就是百度&#xff0c;…

如何打造智能公厕:实现智慧监测、自动化运营和智慧化管理

在现代城市里&#xff0c;公共厕所是人们不可或缺的基础设施之一。然而&#xff0c;传统的公厕管理方式已经无法满足人们对公厕的期望&#xff0c;因此需要采用智慧公厕管理系统来提升公厕服务的质量。本文将以智慧公厕领先厂家广州中期科技有限公司&#xff0c;大量精品案例现…

《算法通关村第一关——链表青铜挑战笔记》

《算法通关村第一关——链表青铜挑战笔记》 Java如何构造出链表 概念 如何构造出链表&#xff0c;首先必须了解什么是链表&#xff01; 单向链表就像一个铁链一样&#xff0c;元素之间相互链接&#xff0c;包含多个节点&#xff0c;每个节点有一个指向后继元素的next指针。…

ES6(ECMAScript 2015)有哪些新属性,如何判断当前浏览器是否支持?

ES6&#xff08;ECMAScript 2015&#xff09;引入了许多新的语法和特性&#xff0c;以增强 JavaScript 编程语言的功能。以下是一些常见的 ES6 语法和特性以及它们的解释&#xff1a; let 和 const 声明&#xff1a; let 和 const 用于声明变量&#xff0c;代替了旧的 var 关键…