使用Git进行项目版本控制

news2025/2/24 17:19:19

1、什么是Git?

GIT,全称是分布式版本控制系统,git通常在编程中会用到,并且git支持分布式部署,可以有效、高速的处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

本地式 VS 集中式 VS 分布式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GG5ooPy1-1691719294411)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208142837991.png)]

2、安装Git

安装包素材:链接

也可以去官网下载你想要的版本

Git官网

点击图标进行安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3o2M8c68-1691719294413)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208110721176.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Mr5CjwP-1691719294414)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208110753487.png)]

选择安装路径 —》点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cVRE8Cb6-1691719294414)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208110851537.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lu0v8oQG-1691719294414)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208110909102.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xwyiDCGi-1691719294415)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208110935288.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DQ6fbLQW-1691719294415)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208110950424.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UHOeAEIV-1691719294415)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111005281.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FGPi1JXp-1691719294415)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111022526.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ae0Womik-1691719294416)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111035429.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P4cyCiA5-1691719294416)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111101508.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ygu7UqlF-1691719294416)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111115463.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OXvaPB4u-1691719294416)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111132852.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OR3ovXQK-1691719294417)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111149388.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0eozLlrE-1691719294417)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111203195.png)]

点击下一步

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jWLFLP3R-1691719294417)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111219528.png)]

点击安装 —》进行安装

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4vGX1Ze-1691719294418)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208111239616.png)]

安装完成

3、Git汉化

Git汉化分为两部分:汉化Git Bash和汉化Git GUI。

3.1 Git Bash汉化

Git Bash的汉化很简单,只需要在命令行界面点击右键-选择option-Windows-然后在里面将language设置成中文就可以了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rZo6elOK-1691719294418)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208135336129.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OEtrN6u9-1691719294418)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208135340348.png)]

3.2 Git GUI汉化(了解)

Git GUI,想要设置成中文就显得没那么容易了。打开设置里面,全是密密麻麻的的英文,而且找了半天也没找到对应的语言设置,那么到底应该怎么设置Git GUI的中文显示呢?

其实Git GUI本身是真的没有这个语言设置选项的,所幸的是网上已有网友针对其开发出了对应的汉化包,我们只需要下载安装即可,具体可见https://github.com/stayor/git-gui-zh。

下载下来之后,将其放到安装目录下:/mingw64/share/git-gui/lib/msgs/zh_cn.msg,有可能Git的安装路径下面没有msgs这个文件夹,那么需要自己创建之后再将这个汉化包来放进去。这样就算是汉化完了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHGRhIp0-1691719294418)(E:\PRD\Images\image-20230805112512515.png)]

未设置前

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3oguWLTC-1691719294419)(E:\PRD\Images\image-20230805112636583.png)]

设置后,重新打开软件,你就会发现软件界面已经变成了熟悉的中文了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VlP2LQq1-1691719294419)(E:\PRD\Images\image-20230805112900871.png)]

4、快速上手Git基本命令

只要学会如下Git的十个命令,在日常的开发工作中基本可以应付了。在后面的学习中进行详细了解。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlSqI7hx-1691719294419)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208142952319.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oJBAUE40-1691719294420)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208143015276.png)]

5、Git是怎么运作的?

从两方面来了解Git是怎么运作的,第一个我们先认识一下Git的几个重要的区域,第二个是Git具体是怎么工作的。

首先我们来回顾下,我们在1中讲过,Git是一个分布式的版本控制系统,在这个分布式的版本控制系统中,它会有一个远程的服务器Server Computer,然后会有多个分布式的客户端Computer A与Computer B等,在分布式的客户端中如何想使用远程服务器中的最新代码,它就需要从远程的仓库里去拉取最新代码。在拉取最新代码到本地仓库后,它自己就能形成一个版本控制系统。这个版本控制系统除了可以跟远程仓库进行交互以外,也可以与其他的分布式客户端共享版本信息。然后即使再跟远程仓库断开连接的情况下,它也能够正常运转,因为它自身也是一个版本控制系统。

那么我们是如何将分布式客户端里的文件推送到远程的仓库中并自动生成版本号呢?首先我们来了解下几个重要的区域

6、工作区、暂存区、本地仓库、远程仓库的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MpYp4RgB-1691719294420)(E:\PRD\Images\image-20221208143707889.png)]

6.1 工作区

工作区是指你当前正在工作的项目目录,其中包含了项目的源代码、资源文件和其他相关文件。工作区是你进行开发、修改和测试代码的地方。

6.2 暂存区

暂存区是Git版本控制系统中的一个概念,它是连接工作区和本地仓库的缓冲区域。在对工作区的修改进行提交之前,你可以使用 git add 命令将修改的文件添加到暂存区。暂存区允许你对即将提交的文件进行选择性的添加和修改,为你提供对提交更加精细的控制。

6.3 本地仓库

本地仓库是存储Git项目的完整历史记录和版本信息的地方。当你在项目目录使用 git init 命令时,Git会在你的项目目录中创建一个本地仓库,并开始记录项目的所有更改和提交历史。本地仓库只能被本地访问和管理,并且可以在本地进行回滚、分支管理等操作。

6.4 远程仓库

远程仓库是位于网络上的一个Git仓库,用于远程团队成员之间的代码共享和版本控制。一个远程仓库可以托管在代码托管服务(如GitHub、GitLab等)或者自建的私有服务器上。通过与远程仓库进行交互,你可以将本地的变更推送到远程仓库、获取最新的变更、与其他开发者协同工作等。

6.4 总结

简而言之,工作区是你当前正在进行开发的目录,暂存区是用于临时存放即将提交的文件的缓冲区域,本地仓库是存储Git项目完整历史记录和版本信息的地方,远程仓库是位于网络上用于代码共享和协同开发的Git仓库。它们在不同的层级上承担着不同的角色和功能,协同工作来提供版本控制和团队协作的能力。

7、 Git具体工作流程

7.1 Git的Clone(克隆)命令与Fetch(提取)命令

首先刚开始的情况下,你的本地电脑上面肯定是没有代码的,这时候你需要从远程服务器上去拉取代码到你本地,这时候我们可以使用Git的Clone命令——实现在本地IDE工具中没有代码的情况下,从远程仓库中克隆一整个仓库的所有信息到你的本地仓库里面来。

如果在本地的IDE工具中已经有远程仓库中的代码,其他人又往远程仓库中推送了更新的代码,如果你要去拉取别人推送的更新代码下来,你要怎么做呢?你可以使用Fetch命令(即Fetch命令是在本地有远程仓库里的代码情况下,再从远程仓库中拉取最新代码)。

(从远程仓库中去拉取数据到本地,第一次是Clone,之后全部都使用Fetch命令。)

7.2 Merge (合并之意)

我们刚刚说的CloneFetch命令都是远程仓库到本地仓库,但是我们实际上写代码的区间是在工作区,所以还需要将保存到本地仓库中的代码拉取到工作区,这时我们可以使用Merge命令从本地仓库把代码拉取到本地工作区

我们在第一次使用Clone命令在本地没有代码的情况下,将远程仓库里的代码克隆到本地后,要想再从远程仓库获取最新代码就必须使用**Fetch命令提取到本发仓库,再使用**Merge命令从本地仓库拉取代码到工作区,这种操作会有一点麻烦,所以我们有一个简化的命令叫Pull

7.3 Pull命令 (拉取)

Pull的功能是从远程仓库中直接Merge代码到本地仓库,并且自动Merge代码到工作区。所以Pull命令是Fetch命令与Merge命令之和。 Pull = Fetch + Merge

如果你当前分支与远程分支之间没有冲突,git pull 将会自动执行合并操作,并将远程更新应用到你的本地分支。

如果存在冲突,git pull 将会提示你解决冲突。你需要手动解决冲突,并提交解决后的文件,然后才能完成合并操作。

需要注意的是,git pull 默认以 fast-forward(快进) 模式合并远程分支,这意味着只有当远程分支的提交历史可以直接连接到本地分支的提交历史时,才会执行快进合并。如果你希望强制执行合并操作,可以使用 git pull --no-ff 命令。

7.4 Checkout命令(签出)

假设你自己有个多分支需要去切换,比如要修改bug,我们就创建一个新分支用于修改bug,在修改完bug后将这个分支再合并到master主分支上面来。这个时候就需要使用Checkout命令实现分支间的切换。

7.5 Add命令(添加)

Add命令是将工作区的代码添加到暂存区。

7.6 Commit命令(提交)

再通过Commit命令将保存到暂存区的代码提交到工作仓库,这样本地仓库中就保存到了提交过来的代码版本信息。

然后未来如果我们在写代码的过程中写错了,我们也可以从本地仓库中重新拉取之前写过的代码合并回去(把旧版本合回去),这样就可以使我们避免一些损失、消耗。

7.7 Push命令(推送)

在提交到本地仓库的代码版本信息确认无误后,我们就可以使用Push命令将本地仓库保存的代码推送到远程仓库中。

7.8 "Commit and Push"按扭

"commit and push"是一个按扭,在保存到工作区的代码在使用add添加到暂存区后,我们可以点击 “commit and push” 这个按扭,直接将保存在暂存区的代码推送到远程仓库

8、Git上传代码流程

8.1 新建Git仓库

点击 + 号 —》新建仓库 —》选择对应的语言 —》点击创建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3BBPpSWr-1691719294420)(E:\PRD\Images\image-20230808160538080.png)]

代码仓库(这个就是建成之后的效果)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-81TBC1SR-1691719294421)(E:\PRD\Images\image-20230808161614977.png)]

8.2 打开Gitee创建私人令牌

用于编辑工具访问我们Git上面的项目

点击主页 —》私人令牌 —》生成新令牌 进行token令牌生成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2rU6jTn2-1691719294422)(E:\PRD\Images\image-20230808162624294.png)]

添加描述 —》添加权限 —》点击提交 —》进行密码验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7yyAUHmI-1691719294422)(E:\PRD\Images\image-20230808162928738.png)]

注意: 私人令牌记得找个地方保存下来,不然每次需要使用的时候都需要重新生成。

点击复制 —》 勾选 —》然后点击确认并关闭

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aSL3dSas-1691719294422)(E:\PRD\Images\image-20230808163141500.png)]

8.3 使用Idea进行代码更新

8.3.1 打开Idea配置Git

然后打开Idea,进入设置。右击文件 —》设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5IOX0hKd-1691719294423)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208154315560.png)]

打开版本控制 —》Git —》修改Git安装路径 —》点击测试(显示版本号就证明配置成功了) —>点击确定

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOmhUK58-1691719294423)(E:\PRD\Images\image-20230808164024912.png)]

8.3.2 添加Gitee账号

打开版本控制,可以看到现在我们的列表里面还没有Gitee

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-csNbXcJ9-1691719294423)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208154414875.png)]

打开插件搜索 Gitee —》安装 —》应用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fIv9STbT-1691719294424)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208154545146.png)]

现在可以看到我们的版本控制里面有Gitee了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iPLvP97w-1691719294424)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208154658885.png)]

打开版本控制 —》Gitee —》点击 + 号或者添加账户 —》添加Token令牌进行验证(也可以使用账号密码登录Gitee账号,第一个选项就是通过账号密码登录)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qlFN1zKM-1691719294424)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208154818902.png)]

然后将我们刚才生成的Token添加进去 — 》再点击添加账号

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aIvJc8AF-1691719294425)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208160057876.png)]

可以看到账号已经添加成功了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EOrVvt17-1691719294425)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208160218297.png)]

然后就可以对我们Gitee上面的项目进行版本控制了

打开Gitee —》点击(克隆/下载)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bzFBR8AV-1691719294425)(E:\PRD\Images\image-20230808164654861.png)]

然后点击HTTPS —》进行代码地址复制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wP7d6vmj-1691719294425)(E:\PRD\Images\image-20230808164802362.png)]

点击文件 —》新建 —》来自版本控制的项目 —》进行Gitee上面的项目导入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LPpRp1k3-1691719294426)(C:\Users\11\AppData\Roaming\Typora\typora-user-images\image-20221208161201771.png)]

将复制的代码地址放入到URL框中 —》 点击克隆 —》进行代码克隆

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KYnlIhcG-1691719294426)(E:\PRD\Images\image-20230808165043627.png)]

第一次是clone我们的远程仓库中的代码,什么都没有,然后我们就可以进行框架的搭建,进行项目的编写了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eXsuAg0d-1691719294427)(E:\PRD\Images\image-20230808165338354.png)]

8.3.3 模拟项目成员向代码仓库推送代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h09fD2Jh-1691719294427)(E:\PRD\Images\image-20230808170755821.png)]

输入文件名称 —》编写文件内容 —》输入提交信息 —》 点击提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zx885ngJ-1691719294427)(E:\PRD\Images\image-20230808172827274.png)]
选择分支 —》点击提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G3NBtRbI-1691719294427)(E:\PRD\Images\image-20230808172935847.png)]

8.3.4 Git更新操作(Fetch,Merge)

这种操作不是很方便,需要提取再进行合并(这个操作是用于将代码仓库中最新的代码合并到工作区)

  1. 第一步Git->Fetch拉取到本地仓库

在Git中,git fetch是用于从远程仓库获取最新的提交和分支信息的命令。它不会自动合并或修改你的本地分支,而仅仅将最新的远程变更下载到本地。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDMKh1rv-1691719294428)(E:\PRD\Images\image-20230808173140236.png)]

  1. 第二步Git->Merge 将工作区的代码与本地仓库进行比较

在Git中,git merge是将一个分支的变更合并到另一个分支的操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OUh7juLo-1691719294428)(E:\PRD\Images\image-20230809085827036.png)]

  1. 最终效果

可以看到我们的工作区已经将最新变更给合并了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YBI2VhyR-1691719294428)(E:\PRD\Images\image-20230809102135567.png)]

8.3.5 Git更新操作(Pull)

1. 第一步

查看目前代码的修改状态 (git status)

2. 第二步

暂存需要提交的文件(git add “文件名”)

3. 第三步

提交已暂存的文件(git commit -m “提交日志内容”) 注意:这个内容必须填写,不然提交不了

先将更新的文件添加到暂存区 —》然后提交到本地仓库

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CY6aeiev-1691719294429)(E:\PRD\Images\image-20230809103018208.png)]

点击要提交的最新文件 —》提交的消息 —》提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-drMgHwvR-1691719294429)(E:\PRD\Images\image-20230809111019346.png)]

提交成功,没报错就是成功了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xIeNzRCp-1691719294429)(E:\PRD\Images\image-20230809111240050.png)]

4. 第四步

git pull

在提交项目之前必须先对项目进行更新,此项特别重要,如果不进行更新,别人有项目提交到服务器上,那么你的项目将会提交不上去,使用git解决冲突会比较麻烦,即使你解决了冲突,但是有时候不注意会冲掉别人写的代码,不像svn使用那么简单,所以推送自己项目前必须进行更新(特别重要)

如图1:选择Pull进行更新代码操作;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l3uXEneQ-1691719294430)(E:\PRD\Images\image-20230809111203892.png)]

拉取成功,没报错就是成功了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kyjIyVCV-1691719294430)(E:\PRD\Images\image-20230809111303748.png)]

8.3.6 代码提交(Push)

1. 第一步

git push -u origin master

在拉取项目的时候我们已经将最新的代码拉取到本地仓库了,可以直接进行推送了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-23e3TXkR-1691719294430)(E:\PRD\Images\image-20230809111502474.png)]

选择要推送的分支 —》点击推送

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K4R7VB6m-1691719294430)(E:\PRD\Images\image-20230809111730628.png)]

推送成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1xURqlQZ-1691719294431)(E:\PRD\Images\image-20230809111856169.png)]

至此本地库的代码就成功的提交到远程库,可以在远程库查看更新的代码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9NX7hTI-1691719294431)(E:\PRD\Images\image-20230809112116227.png)]

8.3.7 代码冲突

1. 什么是冲突

冲突是指当你在提交或者更新代码时被合并的文件与当前文件不一致。

2. 冲突的场景
  • 更新代码

  • 提交代码

  • 多个分支代码合并到一个分支时

  • 多个分支向同一个远端分支推送代码时

git的合并中产生冲突的具体情况:
  <1>两个开发者(分支中)修改了同一个文件(不管什么地方)
  <2>两个开发者(分支中)修改了同一个文件的名称
  注意:两个分支中分别修改了不同文件中的部分,不会产生冲突,可以直接将两部分合并。

总结:上面各种情况的本质都是,当前文件与合并文件不一致,因此不论哪种情况其解决冲突的方法是一样的。

3. 解决冲突
远程模拟场景:

双击Hello文件 —》进入文件内部

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B7Ho71Wg-1691719294431)(E:\PRD\Images\image-20230809113045178.png)]

点击编辑 —》模拟代码冲突场景

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ulUosCzK-1691719294432)(E:\PRD\Images\image-20230809113122613.png)]
新增两行代码用于模拟冲突问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6zCbNCcf-1691719294432)(E:\PRD\Images\image-20230809113459255.png)]

提交信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMqhhskY-1691719294432)(E:\PRD\Images\image-20230809114154687.png)]

选择分支 —》点击提交

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivCP4q2F-1691719294432)(E:\PRD\Images\image-20230809114243669.png)]

可以看到是刚刚提交的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QSpP3HCd-1691719294433)(E:\PRD\Images\image-20230809114321405.png)]

本地模拟情景:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZAaiF4g-1691719294433)(E:\PRD\Images\image-20230809114714399.png)]

解决代码冲突:
  1. 现将本地更新的代码提交到本地仓库中:git add —》git commit '提交的信息'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EYcz5baA-1691719294433)(E:\PRD\Images\image-20230809115041729.png)]

提交到本地仓库成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-34ihD3Bv-1691719294433)(E:\PRD\Images\image-20230809115136295.png)]

  1. 进行代码拉取(Pull)

先将.idea和out文件删除,因为我们并没有将它们进行版本控制,它只是我们本地的配置,有可能会报拉取上面的错误,如下所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNTZzSFt-1691719294434)(E:\PRD\Images\image-20230809115506462.png)]

选择分支 —》拉取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Je85eY4W-1691719294434)(E:\PRD\Images\image-20230809115720095.png)]

进行合并,有三种情况:

  1. 第一种:以我本地仓库的代码为准
  2. 第二种:以远程仓库代码为准
  3. 第三种:手动合并

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cfPmlygG-1691719294434)(E:\PRD\Images\image-20230809133935364.png)]

一般都是通过跟团队另一个更改本文件的小伙伴一起沟通进行手动合并,以免误删别人代码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gN1lq4XG-1691719294435)(E:\PRD\Images\image-20230809134423280.png)]

一般解决冲突我们都是选择merge

4. 关于冲突的个人心得

多人协作开发的时候,如果出现了你没有改过的文件跟你冲突了,一定要去找到当事者,说清楚是如何冲突的;

然后协商解决,千万不要擅自拉别的分支去试图解决冲突,或找文件覆盖,更或者以自己的文件为准.

同时记住,解决了之后,要addcommit 最后push.为保证万无一失,最后在冲突都解决之后,重启项目;

保证至少不会有立即奔溃的现象发生.然后才去提交,push.

提交的时候,一定要保持清醒,先搞清楚自己要提交的文件之间的关系,然后再提交,这样才不会有文件缺失的问题,造成奔溃.

如果任务比较多,又开了多个分支,分别进行开发,再次强调,一定要清楚自己在各个分支上做了什么,自己要提交的是什么.最好是能做个详细的笔记,没有把握宁愿不要去提交到生产服务器.

提交代码的时候不要走神,因为这是一个神圣的时刻!

至此我们的Git的使用就完成

8.4 使用Git命令进行代码更新

8.4.1 先根据8.3.3模拟项目成员向仓库推送代码

8.4.2 新建文件夹

1. 新建文件夹 —》右击 —》选择 Git Bash Here

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KomrRu2O-1691719294435)(E:\PRD\Images\image-20230810095330896.png)]

2. 在本地文件夹中初始化Git仓库
git init

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZlzGNRug-1691719294436)(E:\PRD\Images\image-20230810114344155.png)]

3. 克隆一个远程仓库到本地
git clone <repository-url> <自定义名称>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yWaT9hTD-1691719294436)(E:\PRD\Images\image-20230810154936069.png)]

可以看到是需要凭证认证的,这是我们自己设置的,只有通过凭证认证才可以进行后续的操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmQ7pykN-1691719294436)(E:\PRD\Images\image-20230810154619713.png)]

进行认证之后才能对远程仓库进行操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lWJDrAI4-1691719294437)(E:\PRD\Images\image-20230810115321926.png)]

可以看到文件夹下面多了一个文件夹(Git_Test)这个就是我们刚才创建的,点进去查看就是我们Git仓库上面的代码,接下来我们就可以对他进行版本控制了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uSxeE3gc-1691719294437)(E:\PRD\Images\image-20230810115442355.png)]

4. 将文件添加到暂存区
  1. 在 Git_Test 文件夹中重新打开Git工具(根据自己的文件夹路径显示进行对应操作)

  2. 输入 vim Hello.java 对 Hello.java这个类进行编辑,按i、o可以进行编辑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zeuKfrZ7-1691719294437)(E:\PRD\Images\image-20230810140820924.png)]

  1. 在测试类中添加一行代码,用于演示效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WRzhnTfO-1691719294438)(E:\PRD\Images\image-20230810140726338.png)]

按退出键(Esc)后 输入 :wq(保存并退出)

  1. 将文件添加到暂存区

    git add . 主要用于添加当前目录下的修改和新添加的文件到暂存区,而不包括删除的文件。

    git add --all git add -A 则会添加当前目录及其子目录下的所有修改、新增和删除的文件到暂存区。使用哪种命令取决于你想要达到的效果和需要添加到暂存区的文件类型。

    <file> 参数可以是单个文件的路径,也可以是使用通配符指定的多个文件,多个文件使用空格隔开

将代码添加到Git仓库的暂存区: git add <file>
添加所有文件: git add . (add后面有个点)git add -Agit add --all

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xf3LGQiP-1691719294438)(E:\PRD\Images\image-20230810140914350.png)]

  1. 输入 vim Test.txt 对 Test.txt这个文件进行编辑 ,按i、o可以进行编辑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AbWtmqi-1691719294438)(E:\PRD\Images\image-20230810144505636.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJAG1fEU-1691719294439)(E:\PRD\Images\image-20230810144711507.png)]

按退出键(Esc)后 输入 :wq(保存并退出)

  1. 输入 git status 查看提交状态

Changes to be committed: 表示在工作区和暂存区都存在的file

Untracked files: 表示在工作区才有的文件,没有添加到暂存区

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BrctF5df-1691719294439)(E:\PRD\Images\image-20230810144850916.png)]

5. 提交代码到本地仓库
  1. 先了解语法
语法: git commit [-m <message>] [--amend] [--no-edit] [--allow-empty]
  • -m <message>:指定提交的消息。消息应该是有意义的、明确描述本次提交所做更改的简短文本。例如:git commit -m "Fix a bug"
  • --amend:用于修正最后一次提交。通过该选项可以修改上一次提交的消息或者添加/移除文件到上一次提交中,不会生成新的commit-id,通常用于上一次提交版本进行修改,进行合并。
  • --no-edit:用于在修改最后一次提交时,保持原提交的消息不变而不打开文本编辑器。
  • --allow-empty:允许创建一个空的提交,即没有实际更改内容的提交。这在某些情况下可能会有用。
  • -am: 提交跟踪过的文件,相当于直接跳过add环节,-am = add + commit

注意:这个内容必须填写,不然提交不了,在执行 git commit 前,需要确保已使用 git add 命令将要提交的文件添加到暂存区中。否则,git commit 将无法成功进行提交。

  1. 进行代码提交到本地仓库

    可以看到生成了 commit-id 证明提交成功了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PU4A0Yea-1691719294439)(E:\PRD\Images\image-20230810152928880.png)]

6. 进行远程仓库代码拉取

由于我们克隆下来的是最新的版本,这里我们就不需要拉取了,不过还是演示一下吧

注意:每次进行代码推送的时候我们都要拉取最新的代码进行推送,不然版本不一致会出现很多问题

远程仓库代码拉取命令: git pull

输入 git pull 进行最新版本代码拉取

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aFPzXSx5-1691719294439)(E:\PRD\Images\image-20230810153837782.png)]

显示 Already up to date. 证明我们的版本是最新的

7. 进行代码推送
git push -u origin master

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tZJiMN7L-1691719294440)(E:\PRD\Images\image-20230810155500086.png)]

推送成功

8.5 Idea分支

1. 新建分支

创建分支命令: git branch <branch-name>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GnC1Ys7x-1691719294440)(E:\PRD\Images\image-20230809135305425.png)]

刚开始新建的分支内容与主分支是一致的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jce0xYHx-1691719294440)(E:\PRD\Images\image-20230809135446883.png)]

2. Idea查看分支

查看本地分支命令: git branch
查看远程分支命令: git branch -r

在Idea右下角,你可以看到你当前所在的分支,带着[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DefSa9qH-1691719294441)(E:\PRD\Images\8A824FF1.png)]符号的就是主分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1mYr7Yum-1691719294441)(E:\PRD\Images\image-20230809141222192.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iM2192Ts-1691719294441)(E:\PRD\Images\image-20230809141203380.png)]

3. 推送分支到远程库

签出分支命令: git checkout <branch_name>
推送分支到远程仓库命令: git push origin <branch_name>

选择项目Push:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w6wwHxFB-1691719294441)(E:\PRD\Images\image-20230809142833993.png)]

推送完成后,可在远程库查看到刚推送的分支:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvQbLxCh-1691719294442)(E:\PRD\Images\image-20230809145008440.png)]

4. 分支合并

合并分支命令: git merge <branch-name>

先分别往两个分支里面添加一些内容,使它们的内容不同,然后更新到仓库,就可以进行分支合并了,提交到仓库我之前已经讲过了,这里就不做赘述了。

注意:如果要分支合并的话,先把分支切换到主分支上进行合并

主分支代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUXkKqCp-1691719294442)(E:\PRD\Images\image-20230809150839112.png)]

测试分支代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I8VD1PVC-1691719294442)(E:\PRD\Images\image-20230809150620900.png)]

代码编写完记得提交到本地仓库,然后签出到主分支进行代码合并

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52gQCHx5-1691719294443)(E:\PRD\Images\image-20230809150225185.png)]

点击智能合并

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n9o0VfkO-1691719294443)(E:\PRD\Images\image-20230809151128962.png)]

选择手动合并,这时候应该是你和你的小伙伴用到了同一块代码了,记得和小伙伴商量如何修改,修改之前一定要记得备份。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CY3dZZ2U-1691719294443)(E:\PRD\Images\image-20230809151313998.png)]

进行手动合并

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pJD0R1eF-1691719294443)(E:\PRD\Images\image-20230809151723998.png)]

最终结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wCQZiWLc-1691719294444)(E:\PRD\Images\image-20230809151802096.png)]

5. 删除分支

删除分支命令: git branch -d <branch-name>
强制删除分支命令: git branch -D <branch-name>
删除远程仓库分支命令: git push origin --delete <branch-name>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrv9WlHG-1691719294444)(E:\PRD\Images\image-20230809152022687.png)]

查看分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ewBUTUo-1691719294444)(E:\PRD\Images\image-20230809152054608.png)]

6. 其他操作分支命令

重命名分支: git branch -m <old-branch-name> <new-branch-name>
查看分支合并状态: git branch --merged
查看已经合并到当前分支的分支: git branch --no-merged
切换分支: git checkout <branch-name> 或  Git 版本(2.23+): git switch <branch-name>
创建并切换到新分支: git checkout -b <new-branch-name>  或  Git 版本(2.23+): git switch -c <new-branch-name>

8.6、更多Git命令

配置相关命令

  1. git config --global user.name "<Your Name>":设置全局用户名,这个就是代码提交的用户名。
  2. git config --global user.email "<your_email@example.com>":设置全局用户邮箱。
  3. git config --global core.editor "<editor>":设置全局文本编辑器,用于撰写提交说明。
  4. git config --global color.ui true:启用全局彩色输出,使 Git 命令输出更具可读性。
  5. git config --global alias.<alias-name> <command>:设置自定义的 Git 别名,用于简化命令的使用。
    例如:git config --global alias.s status 会将 git status 命令简化为 git s

你可以使用 git config --global --list 命令来查看当前的全局配置信息。

更多命令

  1. git init:在当前目录初始化一个新的Git仓库。
  2. git clone <repository>:克隆(下载)远程仓库到本地。
  3. git add <file>:将文件添加到暂存区,准备提交。
  4. git commit -m "<message>":将暂存区中的改动提交到本地仓库,可以附带一条注释。
  5. git status:查看当前仓库的状态,包括被修改但未提交的文件、新文件等。
  6. git log:查看提交历史记录。
  7. git branch:列出当前仓库的分支列表。
  8. git checkout <branch>:切换到指定的分支。
  9. git merge <branch>:将指定分支的改动合并到当前分支。
  10. git pull:从远程仓库拉取最新的代码更新到本地分支。
  11. git push:将本地分支的修改推送到远程仓库。
  12. git remote add <name> <url>:将远程仓库添加到本地,并赋予一个名称。
  13. git remote -v:查看当前仓库关联的远程仓库信息。
  14. git diff:查看当前工作区与暂存区的差异。
  15. git diff --cached:查看暂存区与最近一次提交的差异。
  16. git diff <commit> <commit>:比较两个提交之间的差异。
  17. git reset <file>:将文件从暂存区移出,取消暂存。
  18. git reset <commit>:将当前分支的HEAD指针移动到指定的提交。
  19. git revert <commit>:撤销指定的提交,生成一个新的提交来反转变更。
  20. git stash:将当前的工作区变更暂存起来,切换到干净的工作区。
  21. git stash pop:恢复最近一次stash的变更并将其从stash堆栈中移除。
  22. git tag <tagname>:创建一个标签,用于标记重要的提交。
  23. git remote remove <name>:移除已关联的远程仓库。
  24. git rebase <branch>:将当前分支的提交基点移动到指定分支的末端。
  25. git remote show <remote>:显示指定远程仓库的详细信息,包括分支跟踪等。
  26. git fetch:从远程仓库下载最新的代码更新,但不会自动合并到当前分支。
  27. git cherry-pick <commit>:选择指定的提交,并将其应用到当前分支。
  28. git revert --no-commit <commit>:撤销指定的提交,并保留撤销操作的改动,但不生成新的提交。
  29. git rebase -i <commit>:以交互式模式重新设置基点,允许合并、修改或删除提交。
  30. git clean -n:显示将要被删除的未被跟踪的文件,但不会真正删除它们。
  31. git bisect:用于二分查找来定位导致问题的代码提交。
  32. git blame <file>:逐行显示指定文件的每一行是谁做的修改,并显示相应的提交信息。
  33. git log --graph:以图形化方式展示提交历史。
  34. git submodule:用于管理和操作Git仓库中的子模块。

查看更多命令

git help: 通过在命令行中输入git help,可以获取关于Git命令的详细说明和用法。

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

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

相关文章

SOLIDWORKS参数化设计表方法

客户痛点&#xff1a;随着人力资源价格的增长&#xff0c;设计人员不足&#xff0c;需要3D建模的数量多&#xff0c;为方便后续的CAM程序。 数据问题&#xff1a;之前是使用二维图纸&#xff0c;标准件/非标准件产品简单&#xff0c;都是单件&#xff0c;图纸发放以二维方式&a…

【C++标准模板库STL】map, unordered_map, set, unordered_set简介与常用函数

文章目录 map是STL中的标准容器&#xff0c;以键值对的形式存储&#xff0c;即为哈希表&#xff0c;并且是有序的unordered_map也是表示哈希表的容器&#xff0c;但是没有顺序&#xff0c;unordered_map查询单个key的时候效率比map高&#xff0c;但是要查询某一范围内的key值时…

【LeetCode每日一题】——128.最长连续序列

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 哈希表 二【题目难度】 中等 三【题目编号】 128.最长连续序列 四【题目描述】 给定一个未…

[保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现

题目链接&#xff1a; 数制转换https://www.nowcoder.com/share/jump/437195121691734210665 描述 求任意两个不同进制非负整数的转换&#xff08;2进制&#xff5e;16进制&#xff09;&#xff0c;所给整数在long所能表达的范围之内。 不同进制的表示符号为&#xff08;0&a…

正则表达式试炼

我希望在这里列出我很多想写的正则表达式&#xff0c;很多我想写&#xff0c;但是不知道怎么写的。分享点滴案例。未来这个文章会越来越长 案例 我有这样的一批文字&#xff0c;我需要删掉Mozilla/5.0前面的所有内容&#xff0c;如果可以用正则表达式批量匹配到&#xff0c;删…

面向数据科学家的懒惰Python 库

你今天感到昏昏欲睡吗&#xff1f;使用这五个库来提高您的工作效率。 一、介绍 数据科学既鼓舞人心&#xff0c;又具有挑战性。通过绘制各种图表以及微调模型以获得最佳结果来执行数据预处理和清理并从数据中生成见解是相当费力的。 在这篇博客中&#xff0c;我将向您介绍五个 …

YOLO v8目标跟踪详细解读(一)

在此之前&#xff0c;我们已经对yolo系列做出了详细的探析&#xff0c;有兴趣的朋友可以参考yolov8等文章。YOLOV8对生态进行了优化&#xff0c;目前已经支持了分割&#xff0c;分类&#xff0c;跟踪等功能&#xff0c;这对于我们开发者来说&#xff0c;是十分便利。今天我们对…

沐渥六门氮气柜技术参数详解

氮气柜是用来存储电子元器件、芯片、半导体器件、金属材料、电路板、精密仪器等物品的设备&#xff0c;通过充入氮气降低柜内湿度&#xff0c;达到防潮、防氧化、防静电、防锈和防霉效果。 六门氮气柜参数 1、容积&#xff1a;约1380L&#xff1b;外尺寸&#xff1a;W1200*D700…

【人工智能前沿弄潮】—— SAM系列:SAM从提示生成物体mask

SAM从提示生成物体mask Segment Anything Model&#xff08;SAM&#xff09;根据指示所需的对象来预测对象掩码。该模型首先将图像转换为图像嵌入&#xff0c;从而可以从提示中高效地生成高质量的掩码。 SamPredictor类为模型提供了一个简单的接口来提示模型。用户可以首先使…

LeetCode 33题:搜索旋转排序数组

目录 题目 思路 代码 暴力解法 分方向法 二分法 题目 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 …

Macbook pro、air、imac 在打字好卡,延迟特别严重,要怎么解决?

MacBook pro在打字好卡&#xff0c;延迟特别严重&#xff0c;到底是什么问题呢&#xff1f;卡的死&#xff0c;打个字要反应很久很久才能响应过来&#xff0c;这不是我理想中的macbook pro。以前也没有这样的问题&#xff0c;找找原因。 上网逛了一圈&#xff0c;发现大家都说…

自动切换HTTP爬虫ip助力Python数据采集

在Python的爬虫世界里&#xff0c;你是否也被网站的IP封锁问题困扰过&#xff1f;别担心&#xff0c;我来教你一个终极方案&#xff0c;让你的爬虫自动切换爬虫ip&#xff0c;轻松应对各种封锁和限制&#xff01;快来跟我学&#xff0c;让你的Python爬虫如虎添翼&#xff01; 首…

@Transactional 注解下,事务失效的七种场景

文章目录 1、异常被捕获后没有抛出2、抛出非运行时异常3、方法内部直接调用4、新开启一个线程5、注解到private方法上6、数据库本身不支持7、事务传播属性设置错误 Transactional是一种基于注解管理事务的方式&#xff0c;spring通过动态代理的方式为目标方法实现事务管理的增强…

腾讯云服务器镜像操作系统大全_Linux_Windows清单

腾讯云CVM服务器的公共镜像是由腾讯云官方提供的镜像&#xff0c;公共镜像包含基础操作系统和腾讯云提供的初始化组件&#xff0c;公共镜像分为Windows和Linux两大类操作系统&#xff0c;如TencentOS Server、Windows Server、OpenCloudOS、CentOS Stream、CentOS、Ubuntu、Deb…

Python基础小项目

今天给大家写一期特别基础的Python小项目&#xff0c;欢迎大家支持&#xff0c;并给出自己的完善修改 &#xff08;因为我写的都是很基础的&#xff0c;运行速率不是很好的 目录 1. 地铁票价题目程序源码运行截图 2. 购物车题目程序源码运行截图 3. 名片管理器题目程序源码运行…

应用程序运行报错:First section must be [net] or [network]:No such file or directory

应用程序报错环境&#xff1a; 在linux下&#xff0c;调用darknet训练的模型&#xff0c;报错&#xff1a;First section must be [net] or [network]:No such file or directory&#xff0c;并提示&#xff1a;"./src/utils.c:256: error: Assertion 0 failed." 如…

GAMES101:作业1记录

主要记录一下GAMES101作业的记录和思考。 1 总览2. 代码编写get_model_matrix(float rotation_angle)get_projection_matrix(float eye_fov,float aspect_ratio,float zNear,f1 oat zFar)进阶代码 Eigen::Matrix4f get_model_matrix_anyaxis(Vector3f axis, float angle) 3. 其…

如何学习嵌入式软件开发?

首先就是认知和基础阶段的学习。这部分一般都是要求学习一些行业认知类的课程&#xff0c;指导嵌入式未来的发展前景和就业趋势&#xff0c;C语言的入门&#xff0c;开发工具的使用&#xff0c;常见的命令&#xff0c;数据结构算法等内容。这一部分主要的就是要靠记忆力&#x…

odoo-034 float 浮点数比较

文章目录 前提问题解决总结 前提 odoo 版本&#xff1a;13 python&#xff1a;3.6.9 问题 比较销售订单行中已送货跟已开票&#xff0c;在 tree 视图显示搜索后的结果。发现搜索条件为已送货 > 已开票时&#xff0c;结果中会包含已送货已开票的。 解决 把这两个值打印出…

【ARM 调试】如何从 crash 信息找出问题原因

一、问题背景 粉丝在进行 ARM-A 系列软件编程时遇到以下问题&#xff0c;串口打印这段日志后就重启了&#xff0c;粉丝求助问是什么原因&#xff1f; Unhandled Exception in EL3. x30 0x0000000000b99b84 x0 0x00000000179a25b0 x1 …