【Git】 -- Part1 -- 基础操作

news2024/11/24 15:45:39

1. Git简介

Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年开发,主要用于源代码管理。Git 允许多名开发者共同合作处理同一个项目,跟踪每个文件的修改,并且在必要时回滚到之前的版本。

Linus Torvalds是Linux操作系统的创始人和主要开发者,不仅仅开源了Linus系统,还有Git也出自于Linus之手,并且开源。

用一个贴近生活的例子比喻一下Git。

  • 你和朋友们决定一起准备一顿火锅。你们找了一张纸,开始列出需要准备的食材,比如肉类、蔬菜、调料等。这就像初始化一个新的Git仓库。
  • 每个人选择自己要准备的食材,并在纸上写下自己负责的任务。例如,你负责买牛肉,朋友负责买蔬菜。这就像在Git中添加文件到暂存区。
    任务完成并记录:
  • 当你买好了牛肉,就在纸上勾掉这个任务并注明你已经买好了牛肉。这就像在Git中提交更改并附上提交信息。
  • 你们可以随时查看这张纸,看看哪些食材已经准备好,哪些还没有准备好。这就像在Git中查看仓库状态,了解哪些文件已被修改、哪些文件已被提交。
  • 如果有人提议准备一种新的蘸料,他们可以在不影响火锅准备的情况下自己尝试一下,成功后再把配方分享给大家。这就像在Git中创建一个新分支,进行独立的开发。
  • 最后,当所有的食材都准备好了,大家一起把所有食材放进火锅中,开始享受美味的火锅。这就像在Git中合并所有的分支,形成最终的产品。

再上面的例子中,Git就相当于一张纸,负责团队协调、跟踪和记录每个人的工作。这就是Git的作用。

而知名的GitHub,Gitee等网站,就像一个大家都可以使用的共享厨房,开发者可以在这里共享和存储他们的代码项目,就像在共享厨房里存放食材和烹饪工具一样。

2. 安装Git

关于Git客户端的安装,参考这篇博客:windows安装git(全网最详细,保姆教程)_windows 安装git-CSDN博客

3. Git 基础操作

3.1 配置Git

安装完Git后,首先要做的事情是设置你的 用户名e-mail 地址。这样在你向仓库提交代码的时候,就知道是谁提交的,以及提交人的联系方式。

  • 配置用户名和邮箱
    • 使用git config [--global] user.name "你的名字"设置你的用户名。
    • 使用git config [--global] user.email "你的邮箱"设置你的邮箱。

其中 --global 是⼀个可选项。如果使用了该选项,表⽰这台机器上所有的 Git 仓库都会使用这个配置。如果你希望在不同仓库中使用不同的 name 或 e-mail ,可以不要 --global 选项即可。

设置完成后,可以使用git config -l查看你配置的信息。
image.png

  • 删除对应的配置命令为:
    git config [--global] --unset user.name
    git config [--global] --unset user.email
    删除后,配置信息中就没有了。
    image.png

3.2 创建本地Git仓库

创建 Git 本地仓库,创建⼀个 Git 本地仓库对应的命令为 git init
以下操作是在Linux系统中,以命令行的方式进行的。

image.png
创建本地仓库成功后,使用ls -al就可以在此目录下看到一个隐藏目录.git。这个目录是用来跟踪管理仓库的,一般不用修改这个目录里面的文件,否则Git仓库可能会被破坏。

image.png

从远程拉取一个项目的时候,就会有这个目录。从远程拉取下来的项目,就是已经初始化好了远程仓库。

3.3 Git⼯作区、暂存区、版本库

  • 工作区
    • 你在本地计算机上的项目文件夹,其中包含所有的文件和子文件夹。
    • 你在这个目录中进行代码编写和修改。当你修改文件时,这些修改首先发生在工作区。
  • 暂存区
    • 英⽂叫 stageindex
    • 暂存区是一个中间区域,保存你准备提交到版本库的文件快照。
    • 当你运行 git add 命令时,修改的文件从工作区被添加到暂存区。
    • 暂存区允许你分步骤地选择哪些修改要包括在下次提交中。
  • 版本库
    • ⼜名仓库,英⽂名 repository
    • 版本库是 Git 存储所有历史版本的地方。它包含了项目的所有提交历史。
    • 当你运行 git commit 命令时,暂存区中的文件快照被永久保存到版本库中,成为一个新的提交。
    • 版本库可以分为本地版本库(在你的计算机上)和远程版本库(在服务器上,如 GitHub、GitLab 等)。

图解工作区、暂存区、版本库之间的关系:

image.png

  • 图中左侧为⼯作区,右侧为版本库。Git 的版本库⾥存了很多东西,其中最重要的就是暂存区。
  • 在创建 Git 仓库时,Git 会为我们⾃动创建⼀个唯⼀的 master 分⽀,以及指向 master 的⼀个指 针叫 HEAD
  • 当对⼯作区修改(或新增)的⽂件执⾏ git add 命令时,暂存区⽬录树的⽂件索引会被更新。
  • 当执⾏提交操作 git commit 时,master 分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中。

通过新建或粘贴进⽬录的⽂件,并不能称之为向仓库中新增⽂件,⽽只是在⼯作区新增了⽂件。必须要通过使⽤ git add 和 git commit 命令才能将⽂件添加到仓库中进行管理!!!

4. Git三板斧

“Git 三板斧” 通常指的是 Git 中最常用的三个基本命令,分别是 git addgit commitgit push。这些命令是使用 Git 进行版本控制的核心操作。

4.1 git add

git add 命令是 Git 中用于将文件的修改添加到暂存区的命令。它允许你选择哪些修改准备提交到版本库。
常见的有:

  • git add [file1] [file2] ... 添加一个或者多个文件到暂存区。
  • git add [dir] 添加指定⽬录到暂存区,递归式添加。
  • git add . 添加当前⽬录下的所有⽂件改动到暂存区

4.2 git commit

git commit 是 Git 中用于将暂存区中的更改提交到本地版本库的命令。每次提交都会生成一个唯一的提交记录(commit),并附带一条描述这次更改的提交信息。提交记录使你能够追踪项目历史中的所有更改,并在需要时回滚到之前的状态。

常用的有:

  • git commit -m "提交日志" 提交暂存区全部内容到本地仓库中。
  • git commit [file1] [file2] ... -m "message" 提交暂存区的指定⽂件到仓库区。

注意 git commit 后⾯的 -m 选项,要跟上描述本次提交的提交信息,由⾃⼰完成,这部分内容绝对不能省略,并不能乱写,是⽤来记录你的提交细节,是要暴露给其他⼈看的。

4.3.1 使用示例 - 添加文件

在Git仓库中,新建一个main.cc文件,将其添加到本地仓库中。

  • 先使用git add 将其从工作区添加到暂存区中。
  • 在使用git commmit 将其提交到版本库中。

image.png
git commit 命令执⾏成功后会告诉我们,1个⽂件被改动。插入了7行内容。

我们还可以多次 add 不同的⽂件,⽽只 commit ⼀次便可以提交所有⽂件,是因为需要提交的⽂件是通通被 add 到暂存区中,然后⼀次性 commit 暂存区的所有修改即可。
比如:
image.png

这样,就可以新建或者修改过的代码文件提交到本地仓库中了。
可以使用git log来查看历史提交记录。
image.png
如果嫌输出信息太多,看得眼花缭乱的,可以加上 --pretty=oneline 参数。比如:

image.png
当提交完到版本库中后,会记录每次commit id(版本号)。Git 的 commit id 不是1,2,3……递增的数字,⽽是⼀个 SHA1 计算出来的⼀个⾮常⼤的数字,⽤⼗六进制表⽰。就是下图红框框出来的东西。

image.png

commit id 的作用

  • 唯一标识提交:每个提交都有一个唯一的提交 ID,可以用来引用特定的提交。
  • 追踪历史:提交 ID 帮助你在项目历史中查找和回滚特定的更改。
  • 协作和合并:在团队协作中,提交 ID 可以用于交流和合并代码。

这时候查看一下.git的目录结构。
image.png

  • HEAD 就是我们的默认指向 master 分⽀的指针。
    • 查看HEAD后发现,他引用的是另一个目录。
      image.png
      查看到的就是当前最新的一个commit id。默认的master分支就是最新的一次提交。
  • index就是暂存区,add 后的内容都是添加到这⾥的。
  • objects 为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容。
    • 当执⾏ git add 命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于 “.git/objects” ⽬录下.
    • 查找 object 时要将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称。
    • 找到这个⽂件之后,⼀般不能直接看到⾥⾯是什么,该类⽂件是经过 sha (安全哈希算法)加密过的⽂件。
    • 但是可以使⽤ git cat-file 命令来查看版本库对象的内容。
    • 食用方法如下:三次git cat-file即可查看到。
      image.png

总结

在本地的 git 仓库中,有⼏个⽂件或者⽬录很特殊:

  • index: 暂存区, git add 后会更新该内容。
  • HEAD: 默认指向 master 分⽀的⼀个指针。
  • refs/heads/master: ⽂件⾥保存当前 master 分⽀的最新 commit id 。
  • objects: 包含了创建的各种版本库对象及内容,可以简单理解为放了 git 维护的所有修改。

4.3.2 使用示例 - 修改文件

什么是修改?⽐如你新增了⼀⾏,这就是⼀个修改,删除了⼀⾏,也是⼀个修改,更改了某些字符, 也是⼀个修改,删了⼀些⼜加了⼀些,也是⼀个修改,甚⾄创建⼀个新⽂件,也算⼀个修改。

比如下面的操作:
修改main.cc和file1中的数据。

image.png
修改完后,使用git status就可以查看到被修改的文件信息了。

git status 是一个用于显示当前 Git 仓库状态的命令。它会显示当前工作目录和暂存区的状态信息,帮助你了解哪些文件被修改了、哪些文件被暂存了以及哪些文件还未被跟踪。

image.png
上面的结果是修改了file1和main.cc,但是还没完成添加和修改。

这样,我们只知道⽂件被修改了,如果能知道具体哪些地⽅被修改了,就更好了。不用担心,Git把这个事情也做了。
使用git diff [file]即可查看

image.png
git diff [file] 命令⽤来显⽰暂存区和⼯作区⽂件的差异,显⽰的格式正是Unix通⽤的diff格式。
上图红色就是删除掉的,绿色就是新增的。

使用git add 将修改的文件添加到暂存区后,再使用git status查看状态信息就没有了。

image.png
git add之后,就可以使用git commit 添加到版本库中了。使用git status就会查看到最新的状态信息了。

image.png

4.3.3 使用示例 - 版本回退

当你发现自己不小心把错误的代码提交到版本库中,此时就要及时的回退。

git reset命令用于版本回退。可以指定回退到某一次提交的版本中。“回退”本质是 要将版本库中的内容进⾏回退,⼯作区或暂存区是否回退由命令参数决定:

git reset语法格式为:git reset [--soft | --mixed | --hard] [HEAD]

  • --soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
  • --mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内 容,⼯作区⽂件保持不变。
  • --hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命 令,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。
  • HEAD参数:
    • 可直接写成 commit id,表⽰指定退回的版本。
    • HEAD 表⽰当前版本
    • HEAD^ 上⼀个版本
    • HEAD^^ 上上⼀个版本…依次类推
    • 也可以使用~数字表示:
    • HEAD ~ 0 表⽰当前版本,HEAD ~ 1上⼀个版本,HEAD~2 上上⼀个版本…

使用示例:将mian.cc更新三个版本,分别提交三次。

image.png
此时查看历史提交记录。

image.png
这是,需要回退到V1的版本。重新从V1版开始编写,同时也希望将工作区的内容回退到V1。
使用git reset 进行版本回退。

image.png
由于希望的是将⼯作区的内容也回退到 V1 版本,所以需要--hard参数。
此时工作区的已经回退到V1版本了。

image.png
使用git log,版本库中也回退到V1版本了。

如果此时搞错了,本来退回到V2版本就行了,但是多回退了一个版本,该怎么办?还能时光倒流吗?

可以的!Git也提供了"时光倒流",如果你的控制台之前有V2版本的commit id,直接git reset即可。

如果没有,没关系,Git 提供了git reflog命令。该命令⽤来记录本地的每一次命令。

image.png
git reflog查看的到commit id只保留了一部分。
下面就可以正常使用git reset回退到V2版本了。记得带--hard参数,将工作区的数据也恢复了。
image.png
提交的时候还是慎重,在实际开发中,由于⻓时间的开发了,导致 commit id 早就找不到了,再也没法时光倒流了。

4.3.4 使用示例 - 撤销修改

如果我们在我们的⼯作区写了很⻓时间代码,越写越写不下去,觉得⾃⼰写的实在是垃圾,想恢复到上⼀个版本。
这时有三种情况:

  • 情况一:对于工作区的代码还没有进行add操作,即没有提交到暂存区。
  • 情况二:已经add,但是没有commit。即添加到暂存区了。
  • 情况三: 已经add,也commit了。即添加到版本库中了。

对于情况一,没有进行add操作,可以直接删除再在工作区新增的代码即可。使用git diff查看修改前后的差距。但是这种只适合一段代码的修改。

如果写了很多,一直没有提交,针对这种情况,Git也提供了更好的解决方式。可以使用git checkout -- [file]命令让工作区的代码回到最近一次add或者commit的状态。

使用如下:

image.png
可以直接让main.cc文件恢复到上次commit的状态。使用git checkout 恢复文件的时候,一定要带 -- file参数。不带此命令是另一种意思,和分支切换有关。

对于情况二:已经add,但是没有commit这种情况,依然可以使用git reset命令进行回退。该命令如果使⽤ --mixed参数,可以将暂存区的内容退回为指定的版本内容,但⼯作区⽂件保持不变。那么就可以回退下暂存区的内容了!!!

使用示例:对main.cc文件进行修改 并进行add操作,然后再进行撤销修改

1、修改mian.cc的代码,并且提交到暂存区。
image.png
2、使用git reset 从暂存区撤销,此时暂存区是干净的,工作区是被修改过的。
image.png
3、撤销工作区的修改(属于情况一了)
image.png

对于情况三,已经add了,也已经commit了,也可以进行撤销工作。
使用git reset --hard HEAD^就可以回退到上一个版本了。不过,这是有前提条件的。就是你还没有把⾃⼰的本地版本库使用git push推送到远程。

使用示例,修改main.cc中的代码,进行add和commit操作,并进行撤销。

1、修改main.cc的代码,进行add和commit操作。

image.png
2、进行撤销

image.png

4.3.5 使用示例 - 删除文件

在 Git 中,删除也是⼀个修改操作。

比如要删除下面仓库中的file3文件。

image.png
如果直接在本地进行删除,是没有用的。git status 命令会告诉你哪些⽂件被删除了。

image.png
上面这样做,只删除了工作区的文件,这样工作区和版本库就不一致了,要删⽂件,⽬前除了要删⼯作区的⽂件,还要清除版本库的⽂件。

清除版本库的文件,需要使用git rm 将文件从暂存区和工作区进行删除,并且进行一次commit操作
image.png
这样,文件就从版本库中被删除了。

清除版本库的文件,如果是误删除,使用git checkout 文件名进行恢复就行了。
image.png

4.3 git push

git push 命令用于将本地仓库中的提交推送(或上传)到远程仓库。这个后面会有专门的文章介绍。下面就简单的演示一下使用场景。

1、以Gitee为例。新建一个远程仓库test。

image.png

image.png

2、创建仓库完成后,复制你的远程仓库URL
点击克隆/下载按钮
image.png
复制这个。
image.png
3、使用复制好的git clone命令 拉取远程代码。
这里以双系统为例。

4.3.1 Linux系统

linux系统直接使用终端复制下来就行。

image.png
这样就成功的拉取到远程代码仓库了,虽然代码仓库里面没有代码~

拉取到后,你的本地目录就会多一个远程窗仓库的目录,进去就会看到.git目录,这就意味着已经初始化好了。你无需再执行git init操作了。
image.png

然后,在这个代码仓库里面新建一个mian.c的代码文件。向远程仓库进行推送。

image.png
此时,在你的远程仓库中就能看到这个mian.cc文件了。

image.png

4.3.2 Windows系统

Windows系统也一样可以使用命令行。使用之前先安装一下Git客户端工具。

关于Git客户端的安装,推荐这篇博客(记得给点赞)windows安装git(全网最详细,保姆教程)_windows 安装git-CSDN博客

安装完后,在你的电脑资源管理器中,创建一个文件夹,来拉取这个远程仓库。

进入到该文件夹后,右键->显示更多选项->点击Git Bash Here

image.png

同样的,使用git clone拉取远程仓库。

image.png
拉取后,进入到此文件夹中,也能看到.git文件夹等信息

image.png

然后在你本地新建源代码文件。
写完后,在代码仓库中打开Git客户端工具。Git Bash Here
就可以向远端推送了~

image.png
远端代码仓库就会更新了。

image.png
关于Git,这篇文章只是介绍了最基础和最重要的三板斧,还有很多。比如分支,冲突什么的,等等~在后面的文章中会继续更新的。

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

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

相关文章

使用 Kubernetes 部署 MinIO 和 Trino

Trino(以前称为 Presto)是一个 SQL 查询引擎,而不是 SQL 数据库。Trino 避开了 SQL 数据库的存储组件,只专注于一件事 - 超快的 SQL 查询。Trino 只是一个查询引擎,不存储数据。相反,Trino与各种数据库交互…

怎么添加网页到桌面快捷方式?

推荐用过最棒的学习网站!https://offernow.cn 添加网页到桌面快捷方式? 很简单,仅需要两步,接下来以chrome浏览器为例。 第一步 在想要保存的网页右上角点击设置。 第二步 保存并分享-创建快捷方式,保存到桌面即可…

rancher快照备份至S3

巧用rancher的S3快照备份功能,快速实现集群复制、集群转移、完全崩溃后的极限修复 1.进入集群管理,在对应的集群菜单后,点击编辑配置 2.选择ETCD,启用,Backup Snapshots to S3选项 并填入你的minio 3 配置成功后 手…

【Linux基础IO】深入理解缓冲区

缓冲区在文件操作的过程中是比较重要的,理解缓冲区向文件刷新内容的原理可以更好的帮助我们更深层的理解操作系统内核对文件的操作。 FILE 因为IO相关函数与系统调用接口对应,并且库函数封装系统调用,所以本质上,访问文件都是通过…

怎么用二维码在线下载视频?视频用二维码下载的制作方法

怎么把视频转换成二维码之后还可以下载视频呢?现在使用二维码的方式来分享视频内容在很多行业和场景中都有应用,这种方式能够更加简单快捷的完成视频的传播分享,那么怎么让扫码者可以自由选择下载视频呢?下面来给大家分享扫码下载…

[Vulnhub] Troll FTP匿名登录+定时任务权限提升

信息收集 IP AddressPorts Opening192.168.8.104TCP:21,22,80 $ nmap -sC -sV 192.168.8.104 -p- --min-rate 1000 Nmap scan report for 192.168.8.104 (192.168.8.104) Host is up (0.0042s latency). Not shown: 65532 closed tcp ports (conn-refused) PORT STATE SER…

2024年老王磁力搜索引擎实测好用,赶快收藏一下

对于不少老司机,多多少少都不知道磁力搜索,不管是学习,还行电影、电视剧、音乐。一个好的工具可以让我们节省大量的时间,只要你想要就可以找的到。 今天整理了几个磁力搜索磁力链接资源,除老王磁力还有整理了9个好用的…

使用LangChain+Ollama自己做的一个和大语言模型聊天的网站支持上下文对话,学习记录。

0.引言 在自己学习的过程中可以自己做一个和聊天大模型对话的一个小网站,成就感不亚于人生第一次跑完10km。 1.项目介绍 前端代码:Vue3, MarkDownIT. 后端代码:Python3, Fernet库, OpenAPI, LangChain, Ollama. Ollama 本地模型的部署和管理…

【经验分享】RT600 serial boot mode测试

【经验分享】RT600 serial boot mode测试 一, 文档描述二, Serial boot mode测试2.1 evkmimxrt685_gpio_led_output 工程测试2.2 evkmimxrt685_dsp_hello_world_usart_cm33工程测试 一, 文档描述 RT600的启动模式共支持4种: 1&am…

Ubuntu系统下修改网卡IP地址

Ubuntu系统下修改网卡IP地址 一、Ubuntu系统介绍1.1 Ubuntu简介1.2 Ubuntu网络配置方式 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、配置网卡IP地址4.1 备份网卡配置文件4.2 查看当前IP地址4.3 修改…

不在枯燥用第三方库简化你的编程之路

简介: Python作为一种多用途的编程语言,得益于其丰富的第三方库和框架,极大地拓展了其功能和应用领域.这些工具不仅提升了开发效率,也使得Python在各个领域展现出色的表现. 今天我们就来聊一聊Python 第三方库是由第三方开发者编写并共享的库,可用于扩展 Python 的…

【windows|006】基本分区和动态磁盘详解

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 ​ 🏅阿里云ACE认证高级工程师 ​ 🏅阿里云开发者社区专家博主 💊交流社…

buuctf----firmware

- -一定不能再ubutu22进行,我是在18(血泪教训) binwalk安装 buuctf firmware(binwalk和firmware-mod-kit的使用)_buu firmware-CSDN博客 参考博客 指令 sudo apt-get update sudo apt-get install python3-dev python3-setuptools python3-pip zlib1g-dev libmagic-dev pi…

Mars3d实现汽车尾气粒子效果从汽车屁股开始发射效果

本身的汽车尾气粒子效果:在汽车模型的中间发射的↓↓↓↓↓↓↓↓↓↓↓ Mars3d实例中是使用transY偏移值实现汽车尾气粒子效果从汽车屁股开始发射效果: // 动态运行车辆的尾气粒子效果 function addDemoGraphic4(graphicLayer) {const fixedRoute new…

【ARMv8/v9 GIC 系列 4.2 -- GIC CPU Interface 详细介绍】

文章目录 GIC CPU Interface 介绍CPU Interface 主要寄存器 GIC CPU Interface 介绍 A 系列处理器提供 5个管脚来实现中断,分别是: nIRQ:物理普通中断nFIQ:物理快速中断nVIRQ:虚拟普通中断nVFIQ:虚拟快速…

ArcGIS定义1.5度带坐标系与投影转换

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 对于ArcGIS如何定义高斯克吕格3度带、6度带,我相信大部分人都是比较清楚的&#xff0…

对红酒数据集,分别采用决策树算法和随机森林算法进行分类。

1.导入所需要的包 from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split 2.导入数据,并且对随机森林和决策数进…

内网安全[3]-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线

1.环境 隧道技术: 隧道技术是一类网络协议,它是一种数据包封装技术,它将原始IP包(其报头包含原始发送者和最终目的地)封装在另外一个数据包(称为封装的IP包)的数据净荷中进行传输,使用隧道的原…

PyTorch实战:模型训练中的特征图可视化技巧

1.特征图可视化,这种方法是最简单,输入一张照片,然后把网络中间某层的输出的特征图按通道作为图片进行可视化展示即可。 2.特征图可视化代码如下: def featuremap_visual(feature, out_dirNone, # 特征图保存路径文件save_feat…

算法基础精选题单 动态规划(dp)(区间dp)(个人题解)

目录 前言: 正文: 题单:【237题】算法基础精选题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 (nowcoder.com) NC50493 石子合并: NC50500 凸多边形的划分: NC235246 田忌赛马&#xff1a…