当前位置: 首页 > news >正文

Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】

Git的概要介绍

1️⃣ Git 是什么?

Git 是一个 分布式版本控制系统(DVCS),用于跟踪代码的变更、协作开发和管理项目历史

  • Linus Torvalds(Linux 之父)在 2005 年开发,主要用于 代码管理
  • 适用于个人开发、团队协作、开源贡献等场景。
  • Git 的数据存储方式类似于 快照(snapshot),而不是文件的逐行变更记录,这让它速度快、占用空间少

2️⃣ Git 的特点

特点解释
分布式每个开发者都有完整的代码库副本,即使远程仓库宕机,本地仍然可用。
高效Git 使用 快照 方式存储变更,速度快,占用空间少。
支持分支(Branching)分支切换快速,适用于多人协作和并行开发。
强大的合并(Merge)功能处理多人开发的代码合并,减少冲突。
代码回滚任何时候都可以回到历史版本,避免误删文件或错误修改。

3️⃣ Git 的基本概念

📌 仓库(Repository)

  • 本地仓库:你的电脑上的 Git 项目目录,存储所有文件、提交历史等。
  • 远程仓库:托管在 GitHub、GitLab、Gitee、腾讯云的CODING等平台上,方便协作。

📌 提交(Commit)

  • 把代码的当前状态记录到 Git 历史中,每次提交都会生成一个唯一的 commit ID

📌 分支(Branch)

  • 主分支(main 或 master):通常是稳定版的代码。master 分支是早期的Git的 默认主分支,而main分支是Git 2.28+ 之后的默认主分支。
  • 开发分支(develop / feature):用于开发新功能,最终合并到主分支。

📌 合并(Merge)

  • 把不同分支的代码合并到一起,解决冲突并整合新功能。

📌 远程(Remote)

  • origin:默认的远程仓库,通常指向 GitHub / GitLab 上的仓库。后面有对origin的详细介绍哈。
  • upstream:通常指原始项目(开源贡献时常见)。

4️⃣ Git 的常用命令

👉 初始化 Git 仓库

git init  # 在当前目录初始化一个 Git 仓库

👉 克隆(Clone)远程仓库

git clone https://github.com/user/repo.git  # 复制远程仓库到本地

👉 添加文件到暂存区

git add <文件名>  # 添加指定文件到暂存区
git add .         # 添加所有文件

👉 提交代码

git commit -m "提交说明"  # 提交代码并附带描述

👉 查看状态

git status  # 查看当前仓库状态(哪些文件被修改、哪些在暂存区)

👉 查看历史记录

git log  # 查看提交历史
git log --oneline --graph  # 简洁模式,带分支图

👉 创建分支

git branch <分支名>  # 创建新分支
git checkout <分支名>  # 切换到指定分支(Git 2.23 以前)
git switch <分支名>  # 切换到指定分支(Git 2.23 及以上)

👉 合并分支

git merge <分支名>  # 把指定分支合并到当前分支

👉 远程操作

git remote -v  # 查看远程仓库
git push origin main  # 推送 main 分支到远程仓库
git pull origin main  # 拉取远程 main 分支最新代码

👉 撤销修改

git reset --hard HEAD~1  # 撤回上一次提交
git checkout -- <文件名>  # 撤销文件修改

5️⃣ Git 的工作流

🚀 本地开发

  1. 创建或克隆仓库

    git init
    git clone https://github.com/user/repo.git
    
  2. 编辑代码并提交

    git add .
    git commit -m "修改了功能A"
    
  3. 推送到远程

    git push origin main
    

🚀 团队协作

  1. 从远程拉取代码
    git pull origin main
    
  2. 创建新分支并开发
    git checkout -b feature-xxx
    
  3. 合并回主分支
    git checkout main
    git merge feature-xxx
    

🚀 开源贡献

  1. Fork 远程仓库
  2. Clone Fork 仓库
  3. 修改代码
  4. 提交 Pull Request(PR)

6️⃣ Git 与 GitHub 的关系

  • Git 是一个 版本控制工具,用于管理本地代码。
  • GitHub / GitLab / Gitee远程仓库托管平台,用于存储 Git 代码,方便团队协作。

7️⃣ 总结

✅ Git 是一个强大的 分布式版本控制系统,适用于个人开发、团队协作和开源贡献
✅ 通过 commit、branch、merge、push 等命令,可以高效管理代码。
✅ Git + GitHub 结合使用,可以更好地进行远程协作。

Git中的master分支与main分支

在 Git 版本控制系统中,mastermain 分支都指的是项目的主要分支,但它们有一些历史和默认行为上的区别。


1️⃣ master 分支:Git 早期默认主分支

  • master 是 Git 早期版本(Git 2.28 之前)的默认主分支,通常用于存储稳定的代码
  • 几乎所有 Git 项目都曾使用 master 作为主要分支,并且 GitHub、GitLab 这些平台最初也默认创建 master 作为主分支。
  • master 这个名字来源于软件开发中的“主版本”(master version)。
  • 由于历史原因,某些团队仍然沿用 master 作为默认主分支。

2️⃣ main 分支:Git 2.28+ 之后的新默认主分支

  • Git 2.28(2020 年发布)开始,Git 官方把默认主分支名称从 master 改为 main
  • 主要原因是 “master” 一词可能带有历史争议(涉及主从关系 master/slave)。
  • GitHub、GitLab 等平台也逐渐采用 main 作为默认主分支
  • 现在新创建的 Git 仓库默认主分支是 main,而不是 master

3️⃣ master vs. main 的区别

对比项mastermain
默认分支Git 2.28 之前的默认主分支Git 2.28+ 之后的新默认主分支
历史背景传统上使用,几乎所有项目都曾使用现代 Git 推荐的默认名称
命名争议有历史争议(与 master/slave 关系有关)更中性、更现代的命名
使用情况旧项目、老习惯仍然沿用新建 Git 仓库默认使用

4️⃣ 如何将 master 改为 main

如果你的仓库仍然使用 master,但你想改为 main,可以执行以下操作:

✅ 1. 在本地重命名 mastermain

git branch -m master main  # 重命名本地 master 为 main

✅ 2. 推送 main 到远程,并让它成为默认分支

git push -u origin main  # 推送 main 分支并设置上游

✅ 3. 删除远程的 master(可选)

git push origin --delete master  # 删除远程 master 分支

或者,你可以在 GitHub/GitLab 上手动更改默认分支,然后删除 master


5️⃣ 如何在 Git 2.28 及以上版本中默认使用 main

如果你的 Git 版本 >= 2.28,可以设置 main 作为默认主分支:

git config --global init.defaultBranch main

这样,以后使用 git init 初始化新仓库时,默认主分支就会是 main,而不是 master


6️⃣ 结论

master 是 Git 早期默认的主分支,Git 2.28 之后改用 main
现代 Git 仓库通常使用 main 作为默认分支,但 master 仍然被许多老项目沿用。
你可以手动将 master 改为 main,也可以修改 Git 设置让 main 成为默认主分支


远程仓库 origin 是什么意思?

问题来源

在博文https://blog.csdn.net/wenhao_ir/article/details/144322621 中,我们在更新本地仓库时用到了下面的命令:

git pull origin

这里边就出现了关键词origin,下面这就对这个关键词`origin进行介绍?

远程仓库 origin 是什么?

在 Git 中,origin远程仓库(remote repository) 的默认名称,通常指向你克隆(git clone)的那个仓库。它是一个 本地 Git 仓库对远程仓库的引用,用于拉取(pull)、推送(push)代码。


origin 由哪里来的?

  • 当你运行 git clone <仓库地址> 时,Git 自动创建一个名为 origin 的远程仓库引用,指向你克隆的远程仓库。例如:

    git clone https://github.com/user/repo.git
    

    这相当于执行:

    git remote add origin https://github.com/user/repo.git
    
  • 你可以查看当前仓库的远程信息:

    git remote -v
    

    典型输出:

    origin  https://github.com/user/repo.git (fetch)
    origin  https://github.com/user/repo.git (push)
    

结果中:fetch对应的URL 用于 从远程仓库获取更新,即命令 git fetchgit pull 会使用它。

  • git fetch 只是从远程仓库获取最新的提交,但不会合并到本地分支。
  • git pull 相当于 git fetch + git merge,会把远程的最新提交合并到当前分支。

结果中:push对应的URL 用于 将本地提交推送到远程仓库,即 git push 命令会使用它。

  • 当你运行 git push origin main,Git 会把 main 分支的最新提交推送到 origin 远程仓库。

origin 的常见用法

  1. 拉取远程代码

    git pull origin main  # 从 origin 的 main 分支拉取更新
    
  2. 推送本地代码

    git push origin main  # 将本地 main 分支推送到 origin
    
  3. 查看远程仓库

    git remote -v  # 查看当前配置的远程仓库
    
  4. 添加/修改远程仓库

    git remote add origin https://github.com/user/repo.git  # 添加远程仓库
    git remote set-url origin https://github.com/user/new-repo.git  # 修改远程仓库地址
    
  5. 删除远程仓库

    git remote remove origin
    

多个远程仓库的情况

  • origin 只是一个默认名称,你可以添加多个远程仓库,比如:

    git remote add upstream https://github.com/original-owner/repo.git
    

    这里 upstream 就是另一个远程仓库。

  • 当你有多个远程仓库时,你需要明确指定你要操作的远程,例如:

    git pull upstream main  # 从 upstream 拉取最新代码
    git push origin main    # 推送到 origin
    

什么叫当前分支的上游分支?

1️⃣ 什么是上游分支(Upstream Branch)?

上游分支(Upstream Branch)Git 远程仓库中与你的本地分支关联的分支
通常,本地分支会与远程仓库的某个分支建立 跟踪(tracking)关系,这个远程分支就叫上游分支

2️⃣ 为什么要有上游分支?

当本地分支有上游分支后,可以:
✅ 直接运行 git pull,拉取远程更新(不用指定远程和分支)。
✅ 直接运行 git push,推送代码到远程仓库(不用写 git push origin main)。
✅ 让 Git 知道本地代码和远程仓库的对应关系,便于管理。


3️⃣ 如何查看当前分支的上游分支?

git branch -vv

示例输出:

* main  123abc [origin/main] Update READMEdev   456def [origin/dev] Fix login bug

解释:

  • * 号表示当前所在的分支(main)。
  • [origin/main] 说明 main 这个本地分支的上游分支origin/main(远程 originmain 分支)。

我电脑上的某个本地仓库运行结果如下:
在这里插入图片描述
可见,我的这个本地仓库与远程仓库的master分支相关联。

或者:

git status

如果当前分支有上游分支,可能会看到:

Your branch is up to date with 'origin/main'.

表示当前分支与 origin/main(远程 main 分支)是同步的。


4️⃣ 如何设置上游分支?

✅ 方法 1:推送时自动建立上游
git push -u origin main
  • -u(或 --set-upstream)参数的作用是 让本地 main 分支跟踪 origin/main 作为上游分支
  • 以后你就可以直接用 git pullgit push,不用每次都指定 origin main
✅ 方法 2:手动设置
git branch --set-upstream-to=origin/main

或者:

git branch --set-upstream-to=origin/main mybranch  # 为 mybranch 设置上游
✅ 方法 3:克隆时自动关联

如果你是通过 git clone 获取远程仓库,Git 默认会把 origin/main 作为 main 分支的上游,你可以直接 git pullgit push


5️⃣ 如何取消上游分支?

如果想让本地分支不再跟踪任何上游分支:

git branch --unset-upstream

或者:

git branch --unset-upstream mybranch  # 取消 mybranch 的上游

6️⃣ 上游分支的作用总结

操作没有上游分支时有上游分支时
git pull需要写 git pull origin main直接 git pull
git push需要写 git push origin main直接 git push
git status只能看到本地状态能看到与远程的差异

7️⃣ 例子:完整的 Git 工作流

# 1️⃣ 克隆远程仓库,默认 main 跟踪 origin/main
git clone https://github.com/user/repo.git
cd repo# 2️⃣ 创建新分支并推送,同时建立上游
git checkout -b feature-login
git push -u origin feature-login# 3️⃣ 查看上游分支
git branch -vv# 4️⃣ 直接拉取远程更新(无需指定分支)
git pull# 5️⃣ 直接推送到远程仓库(无需指定分支)
git push

8️⃣ 总结

上游分支是远程仓库中,当前分支所跟踪的分支
上游分支让 git pullgit push 更方便,无需手动指定远程分支。
git push -u origin <分支> 可以自动设置上游分支,以后推送更轻松。
git branch -vv 可以查看当前分支的上游分支
可以用 --unset-upstream 取消上游分支的跟踪

命令git pullgit pull origin的区别

git pullgit pull origin 之间,主要区别如下:

  1. git pull

    • 省略了远程仓库的名称(默认使用当前分支的上游分支)。
    • 等价于 git pull <默认远程> <当前分支>,其中默认远程通常是 origin,默认分支取决于当前分支的上游设置。
    • 如果当前分支有跟踪的上游分支(比如 origin/main),它会从这个分支拉取更新。
    • 如果当前分支没有配置上游分支,会报错,需要手动指定远程仓库和分支。
  2. git pull origin

    • 明确指定了远程仓库 origin,但没有指定分支。
    • Git 会默认拉取 origin 上当前分支的对应上游分支(如果有的话)。
    • 如果当前分支没有设置上游分支,则需要手动指定,如 git pull origin main

git pullgit pull origin 之间,主要区别如下:

  1. git pull

    • 省略了远程仓库的名称(默认使用当前分支的上游分支)。
    • 等价于 git pull <默认远程> <当前分支>,其中默认远程通常是 origin,默认分支取决于当前分支的上游设置。
    • 如果当前分支有跟踪的上游分支(比如 origin/main),它会从这个分支拉取更新。
    • 如果当前分支没有配置上游分支,会报错,需要手动指定远程仓库和分支。
  2. git pull origin

    • 明确指定了远程仓库 origin,但没有指定分支。
    • Git 会默认拉取 origin 上当前分支的对应上游分支(如果有的话)。
    • 如果当前分支没有设置上游分支,则需要手动指定,如 git pull origin main

什么时候用哪一个?

  • 如果你通常只和 origin 交互,并且已经设置了正确的上游分支,可以直接用 git pull
  • 如果你有多个远程仓库,或者想确保拉取的是 origin,可以用 git pull origin

例子:

# 假设当前分支 main 关联了 origin/main
git pull           # 拉取 origin/main 的更新# 显式指定远程仓库
git pull origin    # 也拉取 origin/main 的更新# 拉取指定远程分支
git pull origin develop  # 拉取 origin/develop 的更新

总结来说,在大多数情况下,git pullgit pull origin 的行为是一样的,区别在于是否明确指定远程仓库。

小结

  • origin 只是 Git 给远程仓库的默认名称,不是 Git 内置的特殊关键字。
  • 你可以改名或增加其他远程仓库,如 upstream
  • 了解 origin 对管理 Git 远程仓库很重要。

Git中的Fork的介绍

Fork 是什么?

Fork(派生) 是 Git 托管平台(如 GitHub、GitLab、Gitee)提供的功能,用于从别人的仓库复制一份独立的副本到你的账户下。它是 远程仓库级别 的复制,不影响原仓库。


Fork 的特点

  1. 独立性:Fork 后,你的仓库是独立的,不会影响原始仓库(上游仓库)。
  2. 与原仓库解耦:你可以自由修改 Fork 过来的代码,而不会影响原作者的仓库。
  3. 可与上游同步:虽然 Fork 是独立的,但你仍然可以通过一些手动的操作保持与原仓库的同步

Fork 和 Clone 的区别

操作ForkClone
作用在 GitHub/GitLab 上复制一个远程仓库将远程仓库下载到本地
位置在你的 GitHub/GitLab 账户下创建一个副本本地电脑
影响原仓库不会影响不会影响
远程关联origin 指向 Fork 仓库,可手动添加 upstreamorigin 指向原仓库

简单理解

  • Fork:复制一个远程仓库到你的 GitHub 账户(远程复制)。
  • Clone:把远程仓库(包括 Fork 过来的)下载到本地(本地复制)。

什么时候用 Fork?

  1. 开源项目贡献

    • 你想为一个开源项目贡献代码,但没有直接的写入权限:
      1. Fork 这个项目到自己的账户。
      2. Clone 到本地进行修改。
      3. 提交更改并 push 到 Fork 仓库
      4. 发起 Pull Request(PR) 请求合并到原仓库。
  2. 个人备份

    • 你可以 Fork 一个项目,以便自己维护或进行私人修改,而不影响原项目。
  3. 实验或定制开发

    • 你想基于某个项目进行二次开发,比如:
      • 添加自己的功能
      • 进行定制修改
      • 但不影响原仓库

Fork 后的典型工作流程

1️⃣ Fork 原仓库

  • 在 GitHub 上点击 Fork,生成一个属于自己的副本。

2️⃣ 克隆 Fork 仓库到本地

git clone https://github.com/your-username/repo.git
cd repo

下面的第3步和第4步是为了Fork 仓库与原仓库的代码保持同步,有时候你Fork 了仓库,但过了很久之后你需要开发,此时就需要先让Fork 仓库与原仓库的代码保持同步。
假如你是刚刚Fork 了一个仓库,并且立即克隆到本地,那么你的 Fork 仓库和原始仓库(上游仓库)是完全同步的,不需要立刻进行同步操作。

3️⃣ 添加原始仓库(上游仓库)获取最新代码

git remote add upstream https://github.com/original-owner/repo.git
git remote -v  # 确认 origin 和 upstream

4️⃣ 拉取最新更新

git fetch upstream  # 获取原仓库的更新信息
git merge upstream/main  # 将有更新的代码合并到本地 main 分支

5️⃣ 修改代码并推送

git commit -am "Added a new feature"
git push origin main  # 推送到你的 Fork

6️⃣ 创建 Pull Request(PR)

  • 在 GitHub 上访问 Fork 仓库,点击 Compare & pull request,提交合并请求给原仓库。提交 Pull Request(PR)后,原仓库的维护者需要手动审核并确认,原仓库才会更新。

小结

Fork 主要用于 GitHub/GitLab/Gitee 等托管平台,让你创建远程仓库的副本。
✅ 适用于开源贡献、代码备份、二次开发等场景。
✅ Fork 后你可以修改代码,并通过 Pull Request(PR) 提交更改。
✅ 可以手动同步原仓库的最新代码,以保持更新。

远程仓库的信息在本地是存储在哪里的?

提问:
Windows上安装了git克隆了某个仓库代码到本地,然后为什么我进入这个仓库代码的目录运行命令:

git pull origin

它就知道去互联网上的哪个仓库检查是否有更新呢?这个仓库地址是存放在哪里的?

答:
远程仓库的地址存储在本地仓库的 .git/config 文件中,git pull origin 会使用这个信息访问远程仓库。.git目录是一个隐藏文件夹哈。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Windows上本地Git客户端的安装

详情见 https://blog.csdn.net/wenhao_ir/article/details/134596223

实际例子操作

在腾讯云的CODING上创建一个Git仓库

打开腾讯云的CODING的网址 https://coding.net/

然后用微信扫码登陆,这里我用的是我“昊虹AI笔记”的微信进行的登陆。

首先需要创建一个项目:
在这里插入图片描述
在这里插入图片描述
项目创建好后点击“代码仓库”:
在这里插入图片描述
创建代码仓库:
在这里插入图片描述
填写仓库信息然后完成创建。
在这里插入图片描述
完成创建后得到下面的提示:
在这里插入图片描述
注意上面的提示:

当您使用客户端克隆代码仓库时,终端提示的用户名是您在 CODING 个人设置 里填写的「手机」或「邮箱」。

后面在克隆仓库到本地时应该会用得着这一点。

还得到了仓库的地址:
HTTPS的地址如下:
在这里插入图片描述

https://e.coding.net/g-cyrz2558/swh_project01/swh_git_01.git

SSH的地址如下:
在这里插入图片描述

我们点击上图中的快速初始化仓库。
在这里插入图片描述
在这里插入图片描述
勾选上“启用README.md文件初始化仓库”,然后点击“快速初始化仓库”:
在这里插入图片描述
初始化仓库完成的界面如下:
在这里插入图片描述
里面目前就只有一个名为README.md的文件。

同时只有一个名为master的分支。
在这里插入图片描述
关于Git中master分支的概念,上面我已经介绍了,由此可见,腾讯云的CODING在主分支的命名上没有使用现在Git 2.28+的main来命名。

将远程建立的Git仓库克隆到本地

新建一个目录,名字就叫 my_git_repo
在这里插入图片描述
进入这个目录,然后右键点击
在这里插入图片描述
然后运行命令:

git clone https://e.coding.net/g-cyrz2558/swh_project01/swh_git_01.git

在这里插入图片描述
然后输入仓库管理帐号的帐号和密码:
2487872782@qq.com
密码略…
在这里插入图片描述
如果一个仓库是公开仓库,是不需要帐号和密码的,仓库是私有仓库还是公开仓库在创建仓库时可以选择。
在这里插入图片描述
仓库管理帐号的帐号和密码后,就开始拉取远程仓库到本地:
在这里插入图片描述
然后在目录E:\my_git_repo下就有这个仓库形成的目录swh_git_01了,如下图所示:
在这里插入图片描述
进入目录swh_git_01看一看,发现远程master分支的文件被克隆到本地了。
在这里插入图片描述
README.md的内容如下:
在这里插入图片描述

查看本地仓库的配置信息

打开查看目录swh_git_01下的隐藏目录:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从上面的配置信息中我们可以看出,名字 origin 指向的远程仓库为https://e.coding.net/g-cyrz2558/swh_project01/swh_git_01.git,当前分支的上游分支为:master
在这里插入图片描述

用命令查看 origin 指向的远程仓库

我们上面已经通过查看文件"E:\my_git_repo\swh_git_01\.git\config"分析出了 origin 指向的远程仓库,这里通过命令查看下:
首先进入目录:E:\my_git_repo\swh_git_01,然后右键打开Git Bash
在这里插入图片描述
运行下面的命令:

git remote -v

在这里插入图片描述
这样就得到了remote的远程仓库的地址了,前面已经介绍过了,fetch用来从远程仓库向本地拉取信息的地址,而push则是本地向远程仓库推送信息的地址。

用命令查看当前分支的上游分支

这篇博文的前面我已经介绍过“当前分支的上游分支”的概念。

我们上面已经通过查看文件"E:\my_git_repo\swh_git_01\.git\config"分析出了当前分支的上游分支,这里通过命令查看下:
首先进入目录:E:\my_git_repo\swh_git_01,然后右键打开Git Bash
在这里插入图片描述
运行下面的命令:

git branch -vv

在这里插入图片描述
可见“当前分支的上游分支”是[origin/master],即本地分支会与远程仓库的分支master相关联。

再在本地的另一个目录中克隆一个这个仓库,便于后面测试pull功能

git clone https://e.coding.net/g-cyrz2558/swh_project01/swh_git_01.git

在这里插入图片描述

新建一个文件,并推送到远程仓库中

在本地仓库目录中新建文件 swh_code.txt,然后随意写入内容:
在这里插入图片描述
运行下面的一系列命令就可以推送到origin对应的远程仓库中:

cd /path/to/your/repository   # 进入仓库目录
git add swh_code.txt          # 添加文件
git commit -m "Add swh_code.txt"  # 提交
git push origin main          # 推送到远程仓库

01-添加文件

git add swh_code.txt 

如果swh_code是目录,则像下面这样写(这将会添加 swh_code 目录下的所有文件和子目录。):

git add swh_code

在这里插入图片描述
02-提交:

git commit -m "Add swh_code.txt"

在这里插入图片描述

03-推送到远程仓库的master分支

git push origin master

在这里插入图片描述

如果是main分支则像下面这样写:

git push origin main

推送完成后我们再到远程仓库中去看一下。
在这里插入图片描述
有刚推送上去的文件了:
在这里插入图片描述
在这里插入图片描述

更新刚才克隆到本地的另一个本地仓库

本地仓库 E:\my_git_repo_2\swh_git_01中目前还没有更新刚才更新到文件swh_code.txt
在这里插入图片描述
由于上一步中已经让远程仓库更新了,所以此时可以更新这个本地仓库了。
运行下面的命令:

git pull origin master

在这里插入图片描述
然后就有了…
在这里插入图片描述

相关文章:

Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】

Git的概要介绍 1️⃣ Git 是什么&#xff1f; Git 是一个 分布式版本控制系统&#xff08;DVCS&#xff09;&#xff0c;用于跟踪代码的变更、协作开发和管理项目历史。 由 Linus Torvalds&#xff08;Linux 之父&#xff09;在 2005 年开发&#xff0c;主要用于 代码管理。…...

光学和光子学模拟工具在 AR/VR 中的作用

AR/VR 中的光学和光子学 增强现实 (AR) 和虚拟现实 (VR) 站在数字进化的前沿。光学和光子学这一复杂的科学深入研究了光的产生、检测和操控&#xff0c;在这一转变中发挥着至关重要的作用。 图 1 (a) 展示了 AR 系统的设计&#xff0c;强调了光学的关键作用。该图描绘了光的旅…...

大模型产品Deepseek(四)、本地安装部署(Ollama方式)

Ollama与DeepSeek的本地安装与部署教程(Windows/MacOS) 在许多AI应用场景中,您可能希望将智能模型本地化,以便更高效地处理数据并减少对外部云服务的依赖。本文将介绍如何在Windows和macOS上直接安装和配置Ollama,以及如何基于Ollama平台部署DeepSeek模型并进行本地交互。…...

visual studio安装

一、下载Visual Studio 访问Visual Studio官方网站。下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 在主页上找到并点击“下载 Visual Studio”按钮。 选择适合需求的版本&#xff0c;例如“Visual Studio Community”&#xff08;免费版本&#xff09;&#x…...

AI大模型——DeepSeek模型部署实战

摘要 文章主要介绍了DeepSeek大模型的本地部署方法、使用方式以及API接入相关内容。首先指出可通过下载Ollama来部署DeepSeek-R1模型&#xff0c;并给出了模型不同参数版本及存储信息。接着说明了如何通过Chatbox官网下载并接入DeepSeek API&#xff0c;以及如何接入本地部署模…...

音视频的文件封装——AVI、MP4、MKV

3.MKV (Matroska Video File) Matroska &#xff08;俄语&#xff1a; матроска &#xff09;是一种多媒体封装格式&#xff0c;可把多种不同编码的影像、不同格式的音频、不同语言的字幕封装到一个文件内。也是一种开放源代码的多媒体封装格式。 Matroska 支持多种文件…...

讯飞绘镜(ai生成视频)技术浅析(五):视频生成

讯飞绘镜(AI生成视频)是一种先进的AI视频生成技术,能够将静态的分镜画面转换为动态视频,并使画面中的元素按照一定的逻辑和动作进行动态展示。 一、讯飞绘镜视频生成技术概述 讯飞绘镜的视频生成技术主要包含以下几个核心模块: 1.视频生成模型:包括生成对抗网络(GAN)…...

【FPGA】 MIPS 12条整数指令 【3】

实现乘除 修改框架 EX&#xff1a;实现带符号乘除法和无符号乘除法 HiLo寄存器&#xff1a;用于存放乘法和除法的运算结果。Hi、Lo为32bit寄存器。电路描述与实现RegFile思想一致 仿真 代码 DataMem.v include "define.v"; module DataMem(input wire clk,input…...

【补充】RustDesk一键部署及账号登录配置

前言 之前分享的配置rustdesk的帖子只是搭建了一个简易服务器&#xff0c;仅能实现简单的远程桌面功能。在后续的使用中切换设备使用时无法看到之前连接的设备&#xff0c;必须知道每个设备的id号&#xff0c;才能在新设备上连接。数据无法在设备间迁移&#xff0c;感觉很麻烦…...

2025.2.6 数模AI智能体大更新,更专业的比赛辅导,同提示词效果优于gpt-o1/o3mini、deepseek-r1满血

本次更新重新梳理了回复逻辑规则&#xff0c;无任何工作流&#xff0c;一共3.2k字细节描述。具体效果可以看视频&#xff0c;同时也比对了gpt-o1、gpt-o3mini、deepseek-r1-67BI&#xff0c;从数学建模题目解答上来看&#xff0c;目前我的数模AI智能体具有明显优势。 AI智能体优…...

昇腾,Ascend,NPU,mindie,镜像,部署vllm:第3篇,补档,没事可以看看这个readme

文章目录 前言文件位置已改变atb model和mindie的关系前言 在之前的版本中,我们提到了一个帮助文档(Readme),这个文档告诉我们,当时的mindie版本不支持0.5b版本的通义千问2.5 我现在就很好奇,新版的mindie,是否支持0.5b的版本呢? 文件位置已改变 之前的文件位置: …...

PbootCMS 修改跳转提示,修改笑脸时间

在使用时&#xff0c;每次都提示这个&#xff1a; 修改方法&#xff1a; 修改跳转时间&#xff1a;找到 handle.php 文件编辑 &#xff0c;调整 setTimeout 函数的时间参数。 修改提示文字&#xff1a;编辑 handle.php 文件&#xff0c;修改提示文字的内容。 隐藏提示页面&am…...

Python办公笔记——将csv文件转Json

目录 专栏导读1、背景2、库的安装3、代码1—自定义表头4、代码2—全字段5、代码3—全字段总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍&#x1f308; 博客主页&#xff1a;请点击——> 一晌…...

25/2/7 <机器人基础>雅可比矩阵计算 雅可比伪逆

雅可比矩阵计算 雅可比矩阵的定义 假设我们有一个简单的两个关节的平面机器人臂&#xff0c;其末端执行器的位置可以表示为&#xff1a; 其中&#xff1a; L1​ 和 L2 是机器人臂的长度。θ1​ 和 θ2是关节的角度。 计算雅可比矩阵 雅可比矩阵 JJ 的定义是将关节速度与末…...

流媒体缓存管理策略

缓存管理策略是指为了优化性能、资源使用和用户体验而对缓存数据进行管理的方法和规则。以下是一些常见的缓存管理策略&#xff1a; 1. LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09; 原理&#xff1a;当缓存满了&#xff0c;需要腾出空间时&…...

【Sql Server】sql server 2019设置远程访问,外网服务器需要设置好安全组入方向规则

大家好&#xff0c;我是&#xff0c;欢迎来到《小5讲堂》。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言1、无法链接2、数…...

阿里云 | DeepSeek人工智能大模型安装部署

ModelScope是阿里云人工智能大模型开源社区 ModelScope网络链接地址 https://www.modelscope.cn DeepSeek模型库网络链接地址 https://www.modelscope.cn/organization/deepseek-ai 如上所示&#xff0c;在阿里云人工智能大模型开源社区ModelScope中&#xff0c;使用阿里云…...

Spring Test 教程大纲

Spring Test 教程大纲 目标&#xff1a;基于 JUnit 5&#xff0c;系统学习 Spring Test 的核心原理、注解使用、测试框架集成及扩展开发。 第 1 章&#xff1a;Spring Test 简介与核心原理 1.1 Spring Test 的作用与优势 简化 Spring 应用的单元测试与集成测试。核心目标&am…...

MySQL数据库基础(创建/删除 数据库/表)

一、数据库的操作 1.1 显示当前数据库 语法&#xff1a;show databases&#xff1b; <1>show 是一个关键字&#xff0c;表示要执行的操作类型 <2>databases 是复数&#xff0c;表示显示所有数据库 上面的数据库中&#xff0c;除了java113&#xff0c;其它的数据库…...

Llama最新开源大模型Llama3.1

Meta公司于2024年7月23日发布了最新的开源大模型Llama 3.1&#xff0c;这是其在大语言模型领域的重要进展。以下是关于Llama 3.1的详细介绍&#xff1a; 参数规模与训练数据 Llama 3.1拥有4050亿&#xff08;405B&#xff09;参数&#xff0c;是目前开源领域中参数规模最大的…...

PHP 面向对象编程详解

PHP 面向对象编程详解 引言 PHP 作为一种广泛使用的服务器端脚本语言&#xff0c;自诞生以来就以其简洁、易学、高效的特点受到开发者的喜爱。随着互联网技术的不断发展&#xff0c;PHP 也在不断地进化&#xff0c;其中面向对象编程&#xff08;OOP&#xff09;已经成为 PHP …...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-files.py

files.py ultralytics\utils\files.py 目录 files.py 1.所需的库和模块 2.class WorkingDirectory(contextlib.ContextDecorator): 3.def spaces_in_path(path): 4.def increment_path(path, exist_okFalse, sep"", mkdirFalse): 5.def file_age(path__fi…...

安卓开发,打开PDF文件

1、把PDF文件复制到raw目录下 &#xff08;1&#xff09;新建一个Android Resource Directory (2)Resource type 改成 raw (3) 把PDF文件复制到raw目录下 2、activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayoutxmlns:and…...

标准模版——添加蜂鸣器及继电器功能模块

一、peripheral.h代码 #include "STC15F2K60S2.H"void Set_Peripheral(unsigned char Buzzer_Status,unsigned char Relay_Status); 二、peripheral.c代码 #include "peripheral.h"void Set_Peripheral(unsigned char Buzzer_Status,unsigned char Rela…...

嵌入式工程师面试经验分享与案例解析

嵌入式工程师岗位受到众多求职者的关注。面试流程严格&#xff0c;技术要求全面&#xff0c;涵盖C/C编程、数据结构与算法、操作系统、嵌入式系统开发、硬件驱动等多个方向。本文将结合真实案例&#xff0c;深入剖析嵌入式工程师的面试流程、常见问题及应对策略&#xff0c;帮助…...

《云夹:高效便捷的书签管理利器》

在信息爆炸的时代&#xff0c;我们每天都会浏览大量的网页&#xff0c;遇到许多有价值的内容。如何高效地管理这些网页书签&#xff0c;以便随时快速访问&#xff0c;成为了一个重要的问题。云夹作为一款出色的书签管理工具&#xff0c;为我们提供了完美的解决方案。 强大的功能…...

ASP.NET Core标识框架Identity

目录 Authentication与Authorization 标识框架&#xff08;Identity&#xff09; Identity框架的使用 初始化 自定义属性 案例一&#xff1a;添加用户、角色 案例二&#xff1a;检查登录用户信息 案例三&#xff1a;实现密码的重置 步骤 Authentication与Authorizatio…...

Web - CSS3过渡与动画

过渡 基本使用 transition过渡属性是css3浓墨重彩的特性&#xff0c;过渡可以为一个元素在不同样式之间变化自动添加补间动画。 过渡从kIE10开始兼容&#xff0c;移动端兼容良好&#xff0c;网页上的动画特效基本都是由JavaScript定时器实现的&#xff0c;现在逐步改为css3过…...

css-根据不同后端返回值返回渲染不同的div样式以及公共组件设定

1.动态绑定 Vue: 使用计算属性 getClassName 来动态计算样式类名&#xff0c;并通过 :class 绑定到 div 元素上。 <template><div :class"getClassName">这是一个根据后端值动态设置样式的 div 元素。</div> </template><script> exp…...

ES6 Set 数据结构用法总结

1. Set 基本概念 Set 是 ES6 提供的新的数据结构&#xff0c;类似于数组&#xff0c;但成员的值都是唯一的&#xff0c;没有重复的值。Set 本身是一个构造函数&#xff0c;用来生成 Set 数据结构。 1.1 基本用法 // 创建一个空Set const set new Set();// 创建一个带有初始…...

Celery任务阻塞问题排查

笔者在工作中经常用到Celery&#xff0c;遇到了2个任务阻塞的问题&#xff0c;分享经验如下。 1 Celery原理 Celery是基于Python开发的分布式任务调度框架&#xff0c;可以将任务发送到若干台机器上&#xff0c;实现多并发调度和计算。Celery的架构主要包含生产者&#xff08…...

巧用DeepSeek,编写CAPL自动化测试脚本

文章目录 前言提问及回答小结 前言 蛇年伊始&#xff0c;火出圈的除了《哪吒2》登顶中国影史票房第一外&#xff0c;科技圈的DeepSeek国产大模型引爆全球&#xff0c;关于在DeepSeek上的提问无奇不有。就车载通信自动化测试&#xff0c;本文也来蹭蹭热度。作为CAN/LIN协议一致…...

【信息系统项目管理师】第21章:项目管理科学基础 详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 21.1 工程经济学21.2 运筹学1.线性规划2.一般的运输问题3.指派问题4.动态规划法5.最小生成树6.博弈论7.决策每年管理科学在综合题里固定是5分,案例分析和论文不考。主要是科学管理相关内容,包括工程经济学、运…...

webpack配置语言之---ts

由于webpack本身不支持ts&#xff0c;如果需要编译ts文件&#xff0c;需要下载相应的loader对ts文件进行编译&#xff0c;以及配置tsconfig.json文件&#xff0c;配置ts的编译选项 1. 安装必要的依赖 首先&#xff0c;确保你已经安装了 Webpack 和 TypeScript。如果还没有安装…...

WPF 进度条(ProgressBar)示例一

本文讲述&#xff1a;WPF 进度条(ProgressBar)简单的样式修改和使用。 进度显示界面&#xff1a;使用UserControl把ProgressBar和进度值以及要显示的内容全部组装在UserControl界面中&#xff0c;方便其他界面直接进行使用。 <UserControl x:Class"DefProcessBarDemo…...

金蛇祈福,鸿运开年!广州白云皮具城2025开市大吉!

锣鼓一响&#xff0c;黄金万两&#xff01;2月6日大年初九&#xff0c;广州白云皮具城举行盛大的醒狮开市仪式&#xff01;象征吉祥如意的醒狮&#xff0c;将好运、财运传递给全体商户和八方来客。 醒狮点睛 金鼓一响黄金万两&#xff0c;十头醒狮登台&#xff0c;董事总经理刘…...

centos虚拟机迁移没有ip的问题

故事背景&#xff0c;我们的centos虚拟机本来是好好的&#xff0c;但是拷贝到其他电脑上就不能分配ip&#xff0c;我个人觉得这个vmware他们软件应该搞定这个啊&#xff0c;因为这个问题是每次都会出现的。 网络选桥接 网络启动失败 service network restart Restarting netw…...

【ESP32cam人脸识别开门及服务器端实战源码】

本项目实现了一个基于ESP32-CAM的实时人脸识别系统&#xff0c;能够通过WiFi进行视频流传输&#xff0c;并在检测到人脸时触发开门指令。系统由两个主要部分组成&#xff1a;video.py&#xff08;后端服务器&#xff09;和 ESP32-CAM.ino&#xff08;ESP32-CAM固件&#xff09;…...

【自开发工具介绍】SQLSERVER的ImpDp和ExpDp工具04

SQLSERVER的ImpDp和ExpDp工具演示 1、指定某些表作为导出对象外 (-exclude_table) 验证用&#xff1a;导出的表&#xff0c;导入到新的数据库 2、指定某些表作为导出对象外 (-exclude_table) 支持模糊检索&#xff0c;可以使用星号 以s开头的表作为导出对象外&#xff0c;…...

什么是中间件中间件有哪些

什么是中间件&#xff1f; 中间件&#xff08;Middleware&#xff09;是指在客户端和服务器之间的一层软件组件&#xff0c;用于处理请求和响应的过程。 中间件是指介于两个不同系统之间的软件组件&#xff0c;它可以在两个系统之间传递、处理、转换数据&#xff0c;以达到协…...

WebSocket connection failed 解决

WebSocket connection failed 解决 前言 这里如果是新手小白不知道 WebSocket 是什么的&#xff1f; 怎么使用的&#xff1f;或者想深入了解的 那可以 点击这里 几分钟带你快速了解并使用&#xff0c;已经一些进阶讲解&#xff1b; WebSocket&#xff0c;多应用于需要双向数据…...

C语言:取出32位数据的高十六位

目录 背景 目标 操作步骤 1. 右移 16 位 2. 掩码操作&#xff08;可选&#xff09; 代码实现 解释&#xff1a; 输出&#xff1a; 总结&#xff1a; 背景 假设我们有一个 32 位的无符号整数&#xff0c;通常它是由 4 个字节组成的。每个字节由 8 位构成&#xff0c;4…...

JUnit 5 条件测试注解详解

JUnit 5 条件测试注解详解 JUnit 5 提供了一系列条件测试注解&#xff0c;允许开发者根据运行时环境、配置或自定义逻辑动态决定是否执行测试。这些注解能有效减少误报&#xff0c;提升测试的灵活性和适应性。以下是所有条件测试注解的详细介绍及示例&#xff1a; 一、条件测试…...

1 Java 基础面试题(上)

文章目录 前言1. Java 中的序列化和反序列化是什么&#xff1f;1.1 序列化&#xff08;Serialization&#xff09;1.2 反序列化&#xff08;Deserialization&#xff09;1.3 serialVersionUID1.4 序列化的应用场景1.5 Transient 关键字 2. 为什么 Java 里面不支持多重继承&…...

个人笔记---关于详解threadlocal 上下文环境存储的最佳数据类型

个人原因很久没有写代码,对于一些基础的数据类型有一些忘记,可以根据gpt和我当时的问答进行复习 关于拦截器,由于在请求的到达controller处理器之前,拦截器(当然过滤器也可以实现,我感觉都差不多)就把上下文设置在了线程副本中,那么这个请求到处理器的这些代码进行查询出来的上…...

JVM监控和管理工具

基础故障处理工具 jps jps(JVM Process Status Tool)&#xff1a;Java虚拟机进程状态工具 功能 1&#xff1a;列出正在运行的虚拟机进程 2&#xff1a;显示虚拟机执行主类(main()方法所在的类) 3&#xff1a;显示进程ID(PID&#xff0c;Process Identifier) 命令格式 jps […...

【数据结构】树哈希

目录 一、树的同构1. 定义2. 具体理解(1) 结点对应(2) 孩子相同(3) 递归性质 3. 示例 二、树哈希1.定义2.哈希过程&#xff08;1&#xff09;叶节点哈希&#xff08;2&#xff09;非叶节点哈希&#xff08;3&#xff09;组合哈希值 3.性质&#xff08;1&#xff09; 唯一性 \re…...

UE5 蓝图学习计划 - Day 12:存储与加载

在游戏开发中&#xff0c;存储&#xff08;Save&#xff09;与加载&#xff08;Load&#xff09; 系统至关重要&#xff0c;玩家需要能够保存游戏进度、角色状态、道具数据等信息&#xff0c;并在下次启动游戏时恢复它们。UE5 提供了 SaveGame 蓝图类&#xff0c;帮助开发者快速…...

18爬虫:关于playwright相关内容的学习

1.如何在python中安装playwright 打开pycharm&#xff0c;进入终端&#xff0c;输入如下的2个命令行代码即可自动完成playwright的安装 pip install playwright ——》在python中安装playwright第三方模块 playwright install ——》安装playwright所需的工具插件和所支持的…...

图解BWT(Burrows-Wheeler Transform) 算法

Burrows-Wheeler Transform (BWT) 是一种数据转换算法, 主要用于数据压缩领域. 它由 Michael Burrows 和 David Wheeler 在 1994 年提出, 广泛应用于无损数据压缩算法(如 bzip2)中. BWT 的核心思想是通过重新排列输入数据, 使得相同的字符更容易聚集在一起, 从而提高后续压缩算…...