git教程(2)---远程仓库操作

news2024/11/20 15:31:40

git教程---远程仓库

  • 远程操作
    • 创建远程仓库
    • 克隆远程仓库
      • HTTPS
      • SSH
    • 向远程仓库推送
    • 拉取远程仓库
    • .gitignore文件
    • 给git指令起别名
    • Issues
    • Pull Requests
  • 标签管理
    • 操作标签
    • 推送标签
  • 多人协作
    • 场景一
    • 场景二
  • 开发模型
    • Git分支设计规范
    • 使用Gitee的DevOps平台体验项目开发流程

远程操作

创建远程仓库

在这里插入图片描述
在这里插入图片描述

可以看到此时已经创建好了一个远程仓库,仓库下会有两个默认的README文件,一个是中文版另一个是英文版,是用来介绍你这个仓库是用来干什么的。

在这里插入图片描述

将仓库设置为开源。

在这里插入图片描述

克隆远程仓库

HTTPS

在这里插入图片描述

🚀直接使用git clone https://... 将仓库克隆到本地。

在这里插入图片描述

SSH

🚀SSH协议使用了公钥加密和公钥登录机制,体现了实用性和安全性,使用此协议的时候需要将我们的公钥放在服务器上,由Git服务器进行管理。使用HTTPS协议没有要求,直接就能克隆到本地。

在这里插入图片描述

直接使用SSH协议克隆远程仓库到本地是不行的。所以要遵循以下步骤:

  • 在用户目录下创建.ssh目录(如果存在就不用创建,并且如果有id_rsa 和 id_rsa.pub 两个文件可以直接跳过下一步,将 id_rsa.pub 中的内容添加到Git服务器上即可),生成SSH密钥对。
    ssh-keygen -t rsa -C "git服务器绑定的邮箱"生成密钥对(一路回车就可以)。
    在这里插入图片描述

  • 将公钥添加到远程仓库。
    在这里插入图片描述
    在这里插入图片描述
    此时就能够成功克隆远程仓库到本地
    在这里插入图片描述

🚀当我们把远程仓库克隆到本地后,Git会将远程仓库的master分支和本地仓库的master分支对应起来,远程仓库的名称默认是origin(使用git remote 查看)。
在这里插入图片描述
或者使用git remote -v查看更详细的信息
在这里插入图片描述

向远程仓库推送

例如:创建一个文件,然后同步到远程仓库。

在推送到远程仓库之前一定要配置一下本地仓库的user.name 和 user.email 保持与远程仓库一致。

git push <远程主机名> <本地分⽀名>:<远程分⽀名>
# 如果本地分⽀名与远程分⽀名相同,则可以省略冒号:
git push <远程主机名> <本地分⽀名>

在这里插入图片描述

在这里插入图片描述

拉取远程仓库

例如:在远程仓库进行一次修改,然后同步到本地仓库(这是为了实验,不要在远程仓库做修改)。

在这里插入图片描述

git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
# 如果远程分⽀是与当前分⽀合并,则冒号后⾯的部分可以省略。
git pull <远程主机名> <远程分⽀名>

在这里插入图片描述

.gitignore文件

🚀如果创建仓库时没有勾选.gitignore文件,可以自己创建。写在.gitignore文件中的文件,会被git忽略掉。

例如:忽略掉 .i 和 .o为结尾的文件:

在这里插入图片描述
🚀在工作区创建以.i和.o为结尾的文件,使用git status查看仓库的状态。
在这里插入图片描述
在这里插入图片描述

可以看到这两个文件确实被git忽略掉了,证明.gitignore文件已经生效了。

特殊情况

  • 如果想添加某个文件,但是这个文件已经被忽略掉了,可以使用git add filename -f强制添加
  • 你想添加某个以.i结尾的文件,返现该文件被忽略了,你想可能是.gitignore文件内容写错了,可以使用git check-ignore -v 进行检查
    在这里插入图片描述
    显示在.gitignore文件的第三行,表明了忽略掉以.i为结尾的所有文件
  • 想要忽略某一类文件,但是不想忽略掉这一类中的某一个或几个文件。例如:忽略掉所有以.开头的文件,但是不想忽略掉.gitignore文件,这样的情况可以在.gitignore文件中特殊标注。
.* #表示忽略掉所有以.开头的文件
!.gitignore #表示不忽略.gitignore文件

给git指令起别名

git config [--global] alias.别名 原本名称

🚀例如,给status起别名为st,这样以后查看仓库状态就可以使用git st了。

在这里插入图片描述
在这里插入图片描述

Issues

在这里插入图片描述

该功能作用就是,当某个人发现代码存在bug时,可以创建一个Issues来告诉仓库的人员代码存在bug,让他们进行修复。

在这里插入图片描述

对于仓库人员,修复完问题后可以将此Issues的状态进行修改。

在这里插入图片描述
在这里插入图片描述

Pull Requests

🚀在实际的开发中,开发者都是在dev分支上进行开发,然后再合并到master分支上的,但是并不是随意就能合并到master分支上的,要在合并之前给仓库的管理员提交合并分支的申请,在申请得到同意后才能够进行合并。这个Pull Requests就是提交申请用的。

在这里插入图片描述

标签管理

操作标签

🚀标签就相当于对某一次commit起一个别名,其作用有:

  • 在项目中发布某个版本的时候,针对最后一次commit起一个v1.0这样的标签来标识v1.0版本已经完成,具有里程碑意义。
  • 对于commit id来说是比较让人记住的,tag能很好的解决这个问题,tag更容易被人记住,所以在tag起名字的时候一定要容易记住并且有一定的意义。当我们要回退到某个重要的版本的时候,可以直接通过tag定位到那个版本。

🚀创建标签

  • git tag v1.0 默认是给最后一次提交打上v1.0的标签
    在这里插入图片描述
  • git tag v0.5 commit id 指定某次提交打一个标签
    在这里插入图片描述
    在这里插入图片描述
  • git tag -a v0.6 -m"" commit id 可以在打标签的时候写一些备注信息
    在这里插入图片描述
    这样是看不到tag的备注信息的。
    git show 标签名 来查看标签的详细信息
    在这里插入图片描述
    🚀 查看有哪些标签
  • git tag
    在这里插入图片描述

🚀在本地删除标签

  • git tag -d 标签名 删除标签
    在这里插入图片描述

推送标签

在这里插入图片描述

在远程仓库也是有标签的,所以我们可以将本地仓库的标签提交的远程仓库中。

🚀推送标签

  • git push origin v1.0 将此标签推送到远程仓库
    在这里插入图片描述
    在这里插入图片描述
  • git push origin --tags 将本地所有标签推送到远程仓库
    在这里插入图片描述
    在这里插入图片描述
  • git push origin :v1.0 将本地删除的v1.0标签推送的远程仓库
	git tag -d v1.0

在这里插入图片描述
在这里插入图片描述

多人协作

场景一

两个开发人员A和B同时开发一个文件file.txt,A在文件中写入aaa的内容,B在文件中写入bbb的内容,最终推送到远程的master分支上。
在这里就用Windows端和Linux端替代两个开发人员。

🚀首先,在Windows端先将仓库克隆到本地。
在这里插入图片描述
🚀将Windows端的开发人员给予仓库的提交权限。
在这里插入图片描述
在这里插入图片描述

🚀开发一个新的文件肯定是不能在master分支上进行开发的,所以要先创建一个dev分支。
在这里插入图片描述
在这里插入图片描述
🚀开发人员A使用git pull拉取仓库信息。
在这里插入图片描述
git branch -r 查看远程的分支
在这里插入图片描述
🚀开发人员A在本地创建dev分支,并与远程的dev分支建立链接关系git checkout -b dev origin/dev(建立链接关系后可以直接使用git pull 或者 git push 进行分支上数据的拉取与推送)。
在这里插入图片描述
git branch -vv查看本地分支与远程分支的链接关系。
在这里插入图片描述
🚀对于开发者B也要在本地创建dev分支,并且和远端的dev分支建立链接关系。
在这里插入图片描述

🚀开发人员A在本地开发file文件,然后push到远程仓库。
在这里插入图片描述
在这里插入图片描述

🚀开发人员B也在file文件下开发,开发完后推送到远程的dev分支。
在这里插入图片描述
在这里插入图片描述

可以看到在开发人员B提交自己开发的代码时候,push会报错。这是因为此时B人员的本地仓库中dev分支已经不是最新状态了,要先git pull拉取最新的分支信息。

在这里插入图片描述

git pull 后提示出现冲突,所以要手动的修改这个冲突。

在这里插入图片描述
在这里插入图片描述
🚀开发人员B解决完冲突后,重新推送。
在这里插入图片描述
🚀在远程仓库的dev分支下已经达到了想要的成果。
在这里插入图片描述
🚀最后还要将dev分支合并到master分支上,可以选择走pull requests,也可以在本地先完成合并再推送到远端上,最终再删除dev分支。下面展示让开发人员A在本地合并好后在推送到远程仓库。

  • 在dev分支下git pull拉取最新的dev分支信息。
    在这里插入图片描述
  • 切换到master分支,保证master分支处于最新状态。
    在这里插入图片描述
  • 方式在master分支上合并dev分支出现合并冲突,先在dev分支上合并master分支,出现问题在dev分支上解决。
    在这里插入图片描述
  • 再切换到master分支上,合并dev分支。
    在这里插入图片描述
  • 将本地master分支最新状态推送到远程仓库。
    在这里插入图片描述
    在这里插入图片描述
  • 删除dev分支
    在这里插入图片描述

场景二

开发人员A和B共同开发一个项目,A负责funcA功能,B负责funcB功能,这个场景中与上个场景不同之处在于针对每个功能都创建一个独立的分支去完成,不是在一个dev分支下完成开发的。

🚀开发人员A在本地创建一个分支feature-A分支,进行开发。
在这里插入图片描述
由于在推送到远程仓库时,远程仓库中并没有feature-A分支,更没有与本地的feature-A分支建立链接关系,所以直接使用git push是不可以的,要使用git push origin feature-A,这样在远程仓库中会自动创建feature-A分支
在这里插入图片描述
🚀开发人员B也在本地创建一个分支feature-B分支,进行开发。
在这里插入图片描述
在这里插入图片描述
🚀但是B突发情况,有一些急事要去处理,所以他先将完成的这部分代码推送到远程。
在这里插入图片描述
🚀此时B的工作交给A来继续开发,所以A要先pull拉取feature-B分支,然后再继续在B的基础上开发func2。
在这里插入图片描述
在这里插入图片描述
在本地创建feature-B分支,并与远程的feature-B分支建立起链接关系。
git branch --set-upstream-to=origin/feature-B feature-B建立链接关系。
git pull拉取feature-B分支的最新状态。
在这里插入图片描述
在这里插入图片描述
🚀在A的帮助下又开发了三分之一,此时B又回到岗位继续开发了。所以A要将最新的状态提交到远程。
在这里插入图片描述
🚀开发人员B需要从远程仓库拉取feature-B分支的最新状态,继续开发,完成后推送到远程仓库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
🚀此时在远程仓库的featrue-A分支和feature-B分支已经达到了预想的效果。
在这里插入图片描述

🚀将两个分支合并到master分支上。

  • 在将feature-A分支合并到master分支之前,为了防止合并冲突,先将master分支合并到feature-A分支上,如果出现冲突现在本地解决。然后提交pull requests请求。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 在将feature-B分支合并到master的时候,可能会发生冲突(如果A和B设计同时开发统一文件时),所以与上面做法一致先将master合并到feature-B上,出现冲突后现在本地解决,然后再将feature-B合并到master分支上。
    先将最新的master分支状态拉取到本地
    在这里插入图片描述
    将master分支合并到feature-B分支上
    在这里插入图片描述
    将feature-B分支合并到master分支,采用提PR的方式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    完成合并后删除没用的分支

🚀解决在远程仓库删除分支后,在本地使用git branch -r还能查看到已经删除的分支。
在这里插入图片描述
使用命令 git remote show origin,可以查看remote地址,远程分⽀,还有本地分⽀与之相对应关系等信息。
在这里插入图片描述
git remote prune origin移除已经删除的分支还能在本地显示。
在这里插入图片描述

开发模型

🚀在实际的项目开发中主要会经历三个重要的阶段:开发阶段 测试阶段 运维阶段,开发阶段主要涉及项目的规划,写代码,构建等工作,测试阶段主要涉及项目的测试工作,运维阶段主要涉及项目的发布,部署,维护工作。针对不同的阶段,都会有与之匹配的工作环境。

🚀系统的开发环境:

  • 开发环境:开发环境是程序猿们专门用于日常开发的服务器。为了开发调试方便,⼀般打开全部错误报告和测试⼯具,是最基础的环境。
  • 测试环境:⼀个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。该环境是开发环境到生产环境的过渡环境。
  • 预发布环境:该环境是为避免因测试环境和线上环境的差异等带来的缺陷漏测而设立的⼀套环境。其配置等基本和生产环境⼀致,目的是能让我们发正式环境时更有把握!所以预发布环境是你的产品质量最后⼀道防线,因为下⼀步你的项目就要上线了。要注意预发布环境服务器不在线上集成服务器范围之内,为单独的一些机器。
  • 生产环境:是指正式提供对外服务的线上环境,例如我们⽬前在移动端或PC端能访问到的APP都是⽣产环境。

在这里插入图片描述

Git分支设计规范

🚀一般来说,针对上面不同的环境来设计不同的分支,例如:

分支名称适用环境
master主分支生产环境
release预发布分支预发布/测试环境
develop开发分支开发环境
feature需求开发分支本地
hotfix紧急修复分支本地

🚀master分支

  • master 为主分⽀,该分⽀为只读且唯⼀分支。⽤于部署到正式发布环境,⼀般由合并release 分⽀得到。
  • 主分支作为稳定的唯⼀代码库,任何情况下不允许直接在 master 分支上修改代码。
  • 产品的功能全部实现后,最终在master分支对外发布,另外所有在master分支的推送应该打标签(tag)做记录,方便追溯。
  • master 分支不可删除。

🚀develop分支

  • develop 为开发分支,基于master分⽀创建的只读且唯⼀分支,始终保持最新完成以及 bug 修复后的代码。可部署到开发环境对应集群。
  • 可根据需求大小程度确定是由 feature 分支合并,还是直接在上⾯开发(非常不建议)。

🚀feature分支

  • feature 分⽀通常为新功能或新特性开发分支,以 develop 分支为基础创建 feature 分支。
  • 命名以 feature/ 开头,建议的命名规则: feature/user_createtime_feature 。
  • 新特性或新功能开发完成后,开发⼈员需合到 develop 分⽀。
  • ⼀旦该需求发布上线,便将其删除。

🚀release分支

  • release 为预发布分⽀,基于本次上线所有的 feature 分支合并到 develop 分支之后,基于 develop 分⽀创建。可以部署到测试或预发布集群。
  • 命名以 release/ 开头,建议的命名规则: release/version_publishtime 。
  • release 分⽀主要用于提交给测试⼈员进行功能测试。发布提测阶段,会以 release 分支代码为基准进行提测。
  • 如果在 release 分支测试出问题,需要回归验证 develop 分支看否存在此问题。
  • release 分支属于临时分支,产品上线后可选删除。

🚀hotfix分支

  • hotfix 分⽀为线上 bug 修复分支或叫补丁分支,主要用于对线上的版本进行 bug 修复。当线上出现紧急问题需要马上修复时,需要基于 master 分支创建 hotfix 分支。
  • 命名以 hotfix/ 开头,建议的命名规则: hotfix/user_createtime_hotfix。
  • 当问题修复完成后,需要合并到 master 分支和 develop 分支并推送远程。一旦修复上线,便将其删除。

使用Gitee的DevOps平台体验项目开发流程

🚀Gitee企业版免费版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
要使用上面的那种分支模型,选择生产/开发分支其他的分支后续创建即可,因为如果选择了开发/发布/缺陷分离模型的话默认提供了feature等分支,但是通常来说是需要多个feature分支的,如果采用这种模型的话是不能再去创建feature分支的,所以选择生产/开发模型即可。

在这里插入图片描述
🚀为企业添加人员
在这里插入图片描述
在这里插入图片描述
🚀在项目和仓库中添加人员。
在这里插入图片描述
在这里插入图片描述

🚀模拟开发流程。

在file文件下进行开发,增加一个需求。
首先,要从develop分支的基础上创建处一个feature分支,完成需求后将feature分支合并到develop分支,删除feature分支。
在develop分支的基础上创建一个release分支,测试人员在此分支上进行测试工作。
测试完毕后将release分支合并到master分支进行上线。

  • 创建feature分支完成需求的开发
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 将feature分支合并到develop分支。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 将develop分支合并到release分支(与上面操作一致)。
  • 将release分支合并到master分支。
    在这里插入图片描述
    在这里插入图片描述
    如果线上出现问题,可能还需要hotfix分支,在hotfix分支上解决问题后,要将hotfix分支合并到master分支和develop分支上。
    在合并完分支后要及时清理那些已经没用的分支。

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

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

相关文章

Access 数据源配置

将数据文件mdb下载到本地电脑&#xff1b;建议不要放在有中文名的路径下打开>控制面板>所有控制面板项>管理工具>ODBC数据源(32位&#xff09;进行数据源配置 用户DNS>添加>选择 Driver do Microsoft Access(*.mdb)项 对话框填写数据源名为 “bookdb” 选择m…

一文了解Elasticsearch

数据分类 数据按数据结构分类主要有三种&#xff1a;结构化数据、半结构化数据和非结构化数据。 结构化数据 结构化数据具有明确定义数据模型和格式的数据类型。 特点&#xff1a; 数据具有固定的结构和模式。 数据项明确定义数据类型和长度。 适合用于数据查询、过滤和分…

winserver

Windows server 的安装&#xff1a; 密钥网上可搜索 一个密钥可以多人使用 设置软盘 的启动时连接 配置网络: 需要设置一个静态IP地址&#xff1a; 活动目录的安装&#xff1a; 安装完成 进行初始化配置 才可以打开活动目录的服务 将服务器提升为域服务器 公司要求的根域名…

百川智能发布大模型Baichuan2-192K,一次可输入35万字超越Claude2

10月30日&#xff0c;百川智能发布Baichuan2-192K大模型。其上下文窗口长度高达192K&#xff0c;是目前全球最长的上下文窗口。Baichuan2-192K能够处理约35万个汉字&#xff0c;是目前支持长上下文窗口最优秀大模型Claude2&#xff08;支持100K上下文窗口&#xff0c;实测约8万…

iZotope RX 10(音频修复和增强工具)

iZotope RX 10是一款音频修复和增强软件&#xff0c;主要特点包括&#xff1a; 声音修复&#xff1a;iZotope RX 10可以去除不良噪音、杂音、吱吱声等&#xff0c;使音频变得更加清晰干净。音频增强&#xff1a;iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限制器等…

微信小程序的育儿早教知识科普交流系统

本毕业设计的内容是设计并且实现一个基于微信小程序的育儿科普系统。采用MYSQL为数据库开发平台&#xff0c;SSM框架&#xff0c;育儿科普系统的功能已基本实现&#xff0c;主要用户、启蒙早教、早教类型、课程类型、育儿课程、注意事项、交流会、交流会报名等。 针对育儿科普…

电动汽车常说的CTP/CTB/CTC技术都有什么玄机?

“没有新词汇&#xff0c;不叫发布会”。随着电动汽车行业的迅速发展&#xff0c;许多专业到让人不明觉厉的“新词汇”也开始频频跃入大众视野。比如车企们在介绍电池时常说的CTP&#xff0c;CTB和CTC&#xff0c;就让人感到一头雾水。 它们究竟是什么&#xff1f;有什么作用&…

算法笔记【2】-SVD奇异分解及在最小二乘求解上的应用

文章目录 一、什么是SVD分解二、SVD分解的步骤三、SVD分解的应用领域四、用SVD求解最小二乘表达式 一、什么是SVD分解 奇异值分解&#xff08;Singular Value Decomposition&#xff0c;简称SVD&#xff09;是一种重要的矩阵分解技术。它可以将一个矩阵分解为三个矩阵的乘积&a…

高斯过程回归 | 高斯过程回归(Python)

高斯过程(Gaussian Processes,GP)是一种强大的非参数化模型,通常用于回归和分类任务。 它允许我们以一种灵活的方式建模数据的不确定性,并在小样本情况下表现出色。 高斯过程是一种用于建模函数的分布的非参数方法。 在高斯过程回归中,咱们试图建立一个连续的随机函数,…

光学仿真|优化汽车内部照明体验

当我们谈论优化人类感知的内部照明时&#xff0c;我们实际上指的是两个重点领域&#xff1a;安全性和驾驶员体验。如果内部照明可以提供尽可能最佳的体验&#xff0c;驾驶员则能够更好地应对颇具挑战性或意外的驾驶状况&#xff0c;并且减轻疲劳感。除了功能优势外&#xff0c;…

做外贸的你是不是也怕遇到麻烦的客户

最近遇到两个客户&#xff0c;可以说还未开始真正的沟通&#xff0c;就已经心里开始打怵&#xff0c;打怵的原因也无非是各种理由上的不匹配。 当我们觉得一件事情不可能做成的时候&#xff0c;那么不能做成的原因就会不断的涌现出来&#xff0c;进而会让我们自己在谈判的时候…

20.3 OpenSSL 对称AES加解密算法

AES算法是一种对称加密算法&#xff0c;全称为高级加密标准&#xff08;Advanced Encryption Standard&#xff09;。它是一种分组密码&#xff0c;以128比特为一个分组进行加密&#xff0c;其密钥长度可以是128比特、192比特或256比特&#xff0c;因此可以提供不同等级的安全性…

【Unity实战】手戳一个自定义角色换装系统——2d3d通用(附项目源码)

文章目录 每篇一句前言素材开始切换头型添加更改颜色随机控制头型和颜色新增眼睛同样的方法配置人物的其他部位设置相同颜色部位全部部位随机绘制UI并添加点击事件通过代码控制点击事件添加颜色修改的事件其他部位效果UI切换添加随机按钮保存角色变更数据跳转场景显示角色数据 …

计算机考研 | 2009年 | 计算机组成原理真题

【计算机组成原理2009年真题43题-10分】 某计算机的CPU主频为500MHz&#xff0c;CPI为5(即执行每条指令平均需5个时钟周期)。假定某外设的数据传输率为0.5MB/s&#xff0c;采用中断方式与主机进行数据传送&#xff0c;以32位为传输单位&#xff0c;对应的中断服务程序包含18条…

Spring MVC的常用注解(设置响应篇)

目录 1.返回静态页面 2.返回数据 3.返回HTML代码片段 4.返回json 5.设置状态码 6.设置Header &#xff08;1&#xff09;.设置 Content-Type &#xff08;2&#xff09;.设置其他Header 推荐先看前篇博客Spring MVC的常用注解&#xff08;接收请求数据篇&#xff09; 接收…

火山引擎 ByteHouse:只需 2 个方法,增强 ClickHouse 数据导入能力

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作为企业数字化建设的必备要素&#xff0c;易用的数据引擎能帮助企业提升数据使用效率&#xff0c;更好提升数据应用价值&#xff0c;夯实数字化建设基础。 数据导…

基于SpringBoot+Vue实现前后端分离的旅游网站系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧

一&#xff0c;工具资源下载 百度网盘资源下载链接地址&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…

【LeetCode刷题日志】88.合并两个有序数组

&#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;C/C领域新星创作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;LeetCode 刷题日志&#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论区留言指正&#xff0c;…

markMan(马克鳗)前端标注工具

马克鳗一款很好用的标注、测量工具&#xff0c;前端必备神器。当需求给我们的原型没有标注颜色&#xff0c;尺寸数据&#xff0c;我们就可以用马克鳗自己标出来。 1.进入官网进行下载 官网网址&#xff1a;http://www.getmarkman.com/ 功能演示&#xff1a; 打开markMan需要拖…