工作中常用的Git操作命令(一)

说明

     时间过得真快,一转眼吗喽也是好歹工作几年了,把这些年平时用的git命令整理记录一下,分几个文章,囊括了常用的命令,工作日常很多时候都是使用svn,回到宿舍自己的项目才是git,就问你离不离谱。。

好习惯

     首先在提交代码的时候,任何提交注释都得标准化,格式统一,这样别人才看的赏心悦目,下面格式提交说明:

1、feat:         新功能(feature)用于提交新功能。例如:feat: 增加用户注册功能

2、fix:           修复 bug用于提交 bug 修复。例如:fix: 修复登录页面崩溃的问题

3、refactor:  代码重构(既不是新增功能也不是修复bug的代码更改)用于提交代码重构。

                     例如:refactor: 重构用户验证逻辑

4、perf:        性能优化用于提交提升性能的代码修改。例如:perf: 优化图片加载速度

5、chore:     杂项(构建过程或辅助工具的变动)用于提交构建过程、辅助工具等相关的内

                     容修改。例如:chore: 更新依赖库

6、build:       构建系统或外部依赖项的变更用于提交影响构建系统的更改。例如:build: 升级

                     webpack到版本5

7、ci:           持续集成配置的变更用于提交CI配置文件和脚本的修改。例如:ci: 修改GitHub

                     Actions配置文件

8、revert:     回滚用于提交回滚之前的提交.

另外还有其他三个相对来说不太常用的:

1、docs: 文档变更用于提交仅文档相关的修改。例如:docs: 更新README文件

2、style: 代码风格变动(不影响代码逻辑)用于提交仅格式化、标点符号、空白等不影响代码运行的变更。例如:style: 删除多余的空行

3、test: 添加或修改测试用于提交测试相关的内容。例如:test: 增加用户模块的单元测试

命令

目录

说明

好习惯

命令

 项目初次运行的配置

记录每次更新到仓库

初始化一个仓库

从第三方平台克隆仓库

跟踪新文件

查看文件状态

文件具体修改

创建提交

移除文件

指向正确的远程仓库地址

远程分支管理

当前所在分支与远程分支对应

更新同步最新提交

合并提交

移除文件

查看提交历史

撤销操作

取消暂存的文件

恢复到上次提交的内容

单独撤销某个文件变动至上次

从远程仓库中获得数据


 项目初次运行的配置

   项目初次运行的时候,得检查config配置,看看配置变量啥的,设置一下user.name和user.email,1和2都差不多,一个是长选项,一个是短选项,都得掌握

git config --list --show-origin
git config -l
git config --global
git config user.name
git config --global user.name "xxxxxx" 

记录每次更新到仓库

   暂存区和非暂存区,已跟踪和未跟踪文件状态时序图

初始化一个仓库

配置并初始化一个仓库(repository)、开始或停止跟踪(track)文件、暂存(stage)或提交(commit)更改,创建一个名为 .git 的子目录,这个子目录含有初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干

 git init

从第三方平台克隆仓库

        基础就是git clone 加上克隆git地址

 git clone https://github.com/libgit2/libgit2 mylibgit

       如果要克隆指定分支的话, 带上 -b

 git clone -b uniapp_branch https://gitee.com/charlinheng/github_share.git

跟踪新文件

        要将你改或者新添加的文件保存在暂存区,那你得标记这个文件,跟踪这个文件

# 添加一个
git add README.md

        要添加多个,则

git add README.md README2.md

        添加所有

git add .

    要查看是否已经被跟踪,处于暂存状态,你可以用git status

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   README

     只要在 Changes to be committed 这行下面的,就说明是已暂存状态。 如果此时提交,那么该文件在你运行 git add 时的版本将被留存在后续的历史记录中。 你可能会想起之前使用 git init 后就运行了 git add <files> 命令,开始跟踪当前目录下的文件。 git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。

注意,如果你不想使用git add . 可以直接使用git commit -a

查看文件状态

可以用 git status 命令查看哪些文件处于什么状态。 如果在克隆仓库后立即使用此命令,会看到类似这样的输出:

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

git status 命令的输出十分详细,但其用语有些繁琐。 Git 有一个选项可以帮你缩短状态命令的输出,这样可以以简洁的方式查看更改。 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种格式更为紧凑的输出。

$ git status -sM README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

新添加的未跟踪文件前面有 ?? 标记,

新添加到暂存区中的文件前面有 A 标记,

修改过的文件前面有 M 标记。

文件具体修改

如果 git status 命令的输出对于你来说过于简略,而你想知道具体修改了什么地方,可以用 git diff 命令,但是此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。

git diff [filename ]

若要查看已暂存的将要添加到下次提交里的内容,
可以用 git diff --staged 命令。 这条命令将比对已暂存文件与最后一次提交的文件差异:

git diff --staged

这里要说一下,使用git自带的乌龟命令行工具看对比的时候,要怎么退出,使用q键退出:在git diff中,按下键盘上的”q”键即可退出

请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件,运行 git diff 后却什么也没有,就是这个原因。

git diff --cached

git diff --cached 查看已经暂存起来的变化( --staged--cached 是同义词):

创建提交

这个命令执行后会反馈当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过,提交时记录的是放在暂存区域的快照。 任何还未暂存文件的仍然保持已修改状态,可以在下次提交时纳入版本管理。 每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

$ git commit -a -m 'added new benchmarks'
[master 83e38c7] added new benchmarks1 file changed, 5 insertions(+), 0 deletions(-)

普通方式,使用 -m 添加注释

git commit -m

跳过使用暂存区域


$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:   CONTRIBUTING.mdno changes added to commit (use "git add" and/or "git commit -a")
$ git commit -a -m 'added new benchmarks'
[master 83e38c7] added new benchmarks1 file changed, 5 insertions(+), 0 deletions(-)

移除文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。

 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。

如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就是 未暂存清单)看到:

$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:(use "git add/rm <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)deleted:    PROJECTS.md
no changes added to commit (use "git add" and/or "git commit -a")

如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删尚未添加到快照的数据,这样的数据不能被 Git 恢复。

如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删尚未添加到快照的数据,这样的数据不能被 Git 恢复。

git rm -f

另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 为达到这一目的,使用 --cached 选项:

就是删除所有,而且在本地不删除,保留,就是不要让git追踪

$ git rm --cached READMEgit rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。比如:
$ git rm log/\*.log
注意到星号 * 之前的反斜杠 \, 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开。 此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:git rm \*~
该命令会删除所有名字以 ~ 结尾的文件。

指向正确的远程仓库地址

确保 origin 指向正确的远程仓库地址。你可以用以下命令查看配置:

git remote -v

如果 origin 的 URL 有问题,可以使用下面的命令重新设置:

git remote set-url origin <remote-repository-url>

  • 操作类型:
    • (fetch) 表示当你从远程仓库拉取(git fetch)时会用到这个 URL。
    • (push) 表示当你推送(git push)到远程仓库时会用到这个 URL。

如果你本地看不到远程分支,用这个更新

git remote add origin

远程分支管理

确保你要推送的分支存在。如果远程仓库中没有 master 分支,可能需要推送到 main 或其他分支。你可以用以下命令查看远程分支:

  • git branch:用于查看本地仓库中的所有分支。执行该命令会显示一个列表,其中包含当前所有的分支,并且当前所在的分支会用"*"表示。

  • git branch -a:a = all,用于查看本地仓库和远程仓库中的所有分支。执行该命令会显示一个列表,其中包含本地所有的分支和远程所有的分支,并且当前所在的分支会用"*"表示。

  • git branch -r:r = remote用于查看远程仓库中的所有分支。执行该命令会显示一个列表,其中包含远程所有的分支。

git remote add uniapp_branch https://gitee.com/charlinheng/github_share.git

命令 git branch -r 用于列出 远程分支,也就是说,它显示的是与远程仓库关联的分支信息。

当前所在分支与远程分支对应

确保你当前所在的分支与远程仓库的分支对应,或者切换到正确的分支:

git checkout <branch-name>

更新同步最新提交

git pull
#如果两个分支的历史记录没有共同的祖先,仍然进行合并。在正常情况下,Git 会拒绝合并两个没有公共祖先的分支,以避免潜在的冲突或问题。使用--allow-unrelated-histories这个选项可以强制 Git 进行合并,通常用在你正在合并两个完全不同历史的仓库或分支时。
git pull master master --allow-unrelated-histories

合并提交

git merge

 #将两个分支的更改合并在一起。它会将另一个分支的所有更改整合到当前分支,--allow-unrelated-histories:这个选项告诉 Git 即使这两个分支的历史没有共同的祖先,也要强制进行合并。在没有这个选项的情况下,Git 会阻止合并两个完全没有共同历史的分支,以避免潜在的冲突或不一致性。


git merge master master --allow-unrelated-histories

移除文件

不像其它的 VCS 系统,Git 并不显式跟踪文件移动操作。 如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。 

$ git mv file_from file_to

其实,运行 git mv 就相当于运行了下面三条命令:

$ mv README.md README
$ git rm README.md
$ git add README

。不过在使用其他工具重命名文件时,记得在提交前 git rm 删除旧文件名,再 git add 添加新文件名。

查看提交历史

$ git log

不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。

git log -p

其中一个比较有用的选项是 -p--patch ,它会显示每次提交所引入的差异(按 补丁 的格式输出)。 你也可以限制显示的日志条目数量,例如使用 -2 选项来只显示最近的两次提交:

git log --stat

你也可以为 git log 附带一系列的总结性选项。 比如你想看到每次提交的简略统计信息,可以使用 --stat 选项:

git log --pretty oneline|fuller

这个选项可以使用不同于默认格式的方式展示提交历史。

常用的就是oneline | fuller

git log --pretty=format

最有意思的是 format ,可以定制记录的显示格式。 这样的输出对后期提取分析格外有用——因为你知道输出的格式不会随着 Git 的更新而发生改变:

git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
085bb3b - Scott Chacon, 6 years ago : removed unnecessary test
a11bef0 - Scott Chacon, 6 years ago : first commit

git log --pretty=format 常用的选项 列出了 format 接受的常用格式占位符的写法及其代表的意义。 

选项说明
%H提交的完整哈希值
%h提交的简写哈希值
%T树的完整哈希值
%t树的简写哈希值
%P父提交的完整哈希值
%p父提交的简写哈希值
%an作者名字
%ae作者的电子邮件地址
%ad作者修订日期(可以用 --date=选项 来定制格式)
%ar作者修订日期,按多久以前的方式显示
%cn提交者的名字
%ce提交者的电子邮件地址
%cd提交日期
%cr提交日期(距今多长时间)
%s提交说明

git log --graph

这种为展示图表模式

commit b9dd7ef50ea004ffd22cc228089cb05d05164971
| Author: hecheng <144***0705@qq.com>
| Date:   Thu Nov 28 15:16:46 2024 +0800
|
|     remove com name from class info
|
*   commit 601e09de5318c38ff7189065eebb8b601146566c
|\  Merge: 67daed7 0a08959
| | Author: hecheng <144***0705@qq.com>
| | Date:   Thu Nov 28 15:08:20 2024 +0800
| |
| |     solve merge
| |
| * commit 0a08959307cb241af9dc2a18432c4489b5975cc4
| | Author: CharLinHeng <144***0705@qq.com>
| | Date:   Mon Nov 25 07:33:07 2024 +0000
| |
| |     add LICENSE.
| |
| |     Signed-off-by: CharLinHeng <144***0705@qq.com>
| |
| * commit 2aa519dd1a4f4d41eef9e72d815b389cfe1da027 (master/develop)
|   Author: CharLinHeng <144***0705@qq.com>
|   Date:   Mon Nov 25 07:32:42 2024 +0000
|
|       Initial commit
|
* commit 67daed7ab58ac71a5fc01e098f01dd00d0640d51
| Author: hecheng <144***0705@qq.com>
| Date:   Thu Nov 28 15:01:43 2024 +0800
|
|     test upload
|

撤销操作

在任何一个阶段,你都有可能想要撤消某些操作。 这里,我们将会学习几个撤消你所做修改的基本工具。 注意,有些撤消操作是不可逆的。 这是在使用 Git 的过程中,会因为操作失误而导致之前的工作丢失的少有的几个地方之一。

git commit --amend

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令来重新提交:

例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
-- 修正的意思

最终你只会有一个提交——第二次提交将代替第一次提交的结果。

Note

当你在修补最后的提交时,与其说是修复旧提交,倒不如说是完全用一个 新的提交 替换旧的提交, 理解这一点非常重要。从效果上来说,就像是旧有的提交从未存在过一样,它并不会出现在仓库的历史中。

修补提交最明显的价值是可以稍微改进你最后的提交,而不会让“啊,忘了添加一个文件”或者 “小修补,修正笔误”这种提交信息弄乱你的仓库历史。

取消暂存的文件

git reset HEAD^ <file-name>

你commmit 了,但是想取消,就用这个,取消单个文件

git reset --hard

丢弃所有未提交的修改,还原最新代码

恢复到上次提交的内容

git stash

通过git stash ---- 通常用这种方法

git stash
git pull
git stash pop

通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。

git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。

git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。

git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
3-2、放弃本地修改的改法

这种方法会丢弃本地修改的代码,而且不可找回,通常不建议使用这种方式。
 

单独撤销某个文件变动至上次

单独撤销某个文件的变动,回到上次

git restore xxxx.js

这个跟stash差不多,stash是回滚所有到上次

stash是所有文件

restore是单个文件

从远程仓库中获得数据

git fetch 

例子如下:       

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

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

相关文章

2.2.5 Windows系统日志管理

文章目录 一、试题及考试说明二、操作步骤1. 在计算机策略中&#xff0c;启用安装程序的日志记录&#xff0c;并且配置日志大小最大10M&#xff0c;日志存储位置为D:\kaoshi_3\2.2.5\&#xff1b;2. 查询安全日志中登录失败的日志信息&#xff0c;并导出保存在D:\kaoshi_3\2.2.…

AiPy实战(7):一键生成天气组件,解放UI设计的双手

在传统 UI 开发流程中&#xff0c;界面设计与实现往往是一项高度依赖人工投入的系统性工作。从页面布局架构搭建、图标元素精确定位&#xff0c;到响应式设计适配&#xff0c;仅基础样式表&#xff08;CSS&#xff09;的编写就可能涉及数十行甚至上百行代码。​ 随着智能开发工…

解读32页大数据中心运营管理整体规划方案【附全文阅读】

该文档为大数据中心运营管理整体规划方案&#xff0c;聚焦于构建高效规范的运营管理体系。方案提出以 “敏前台、稳中台、强后台” 为框架&#xff0c;构建覆盖全角色、全过程、全周期、全要素的一体化 IT 运营管控体系&#xff0c;采用 “11N” 运营模式&#xff0c;明确业主、…

Pyhton-EXCEL与Mysql数据对比

该段代码主要实现从数据库和 Excel 文件中读取数据&#xff0c;并对两者进行字段匹配&#xff0c;最终找出 Excel 中未匹配到的数据库记录。功能如下&#xff1a; [sqlSelect()]&#xff1a;连接 MySQL 数据库并查询比价单及其商品信息。[BiJiaDaoChu()]&#xff1a;调用外部 …

InnoDB索引

1、索引的建立 / 数据的存储 一条条数据存储到页中后&#xff0c;各个数据页组成了一个双向链表&#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表。此时&#xff0c;如果我想根据主键值查询一条记录&#xff0c;只能从第一个数据页开始一个页一个页…

[考研408数据结构]王道大题暑假自用复习记录(每日更新...)

DAY1 2025年6月29日 雨转晴&#x1f327;&#x1f324; 第二章 线性表 2.2线性表的顺序表示 1、从顺序表中删除具有最小值的元素&#xff08;假设唯一&#xff09;并由函数返回被删元素的值。空出的位置由最后一个元素填补&#xff0c;若顺序表为空&#xff0c;则显示出错信…

vue2 el-select下拉选择框 点击其他位置或者弹窗关闭下拉框/点击取消时,下拉框变成之前的值

1.elSelect点击空白处无法收起下拉框&#xff08;失去焦点并隐藏&#xff09; // 定义指令 directives: {clickOutside: {bind: function (el, binding, vnode) {el.clickOutsideEvent function (event) { // here I check that click was outside the el and his childrensif…

MYSQL-JAVAweb1

1.登录 在黑框中输入 net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务1.MySQL数据模型 关系型数据库&#xff1a; 关系型数据库是建立在关系模型基础上的数据库&#xff0c;简单说&#xff0c;关系型数据库是由多张能互相连接的 二维表 组成的数据库 如…

将POD指定具体机器上运行

在Kubernetes中&#xff0c;你可以通过多种方式将Pod调度到指定的节点&#xff08;机器&#xff09;上运行。以下是几种常用的方法及其适用场景&#xff1a; 1. NodeSelector&#xff08;简单标签匹配&#xff09; 通过标签选择器将Pod绑定到具有特定标签的节点。 步骤 为目…

eNSP实验一:IPv4编址及IPv4路由基础

一、实验目的&#xff1a; 配置各路由器上的物理接口的IP地址并实现互联互通配置各路由器的 Loopback 的IP地址并实现互联互通&#xff08;包括备份路由&#xff0c;默认路由&#xff09;图中三个路由器型号为 AR3620。 二、配置物理接口ip 基础配置 设备命名<Huawei>…

基于自然语言处理(NLP)的Twitter情感分析系统

本课题致力于构建一个基于自然语言处理&#xff08;NLP&#xff09;与机器学习技术的Twitter情感分析系统&#xff0c;旨在自动识别用户推文中的主观情绪倾向&#xff0c;如正面、负面或中性。研究过程中将对海量Twitter文本数据进行预处理&#xff0c;包括去除噪声、分词、词性…

H.264中片数据分割(Slice Data Partitioning)介绍

H.264中**片数据分割&#xff08;Slice Data Partitioning&#xff09;**的解码机制。让我为您详细解析&#xff1a; 1. 片数据&#xff08;Slice Data Partitioning&#xff09;分割的概念 片数据分割是H.264中的一种错误恢复机制&#xff0c;通过将片数据分成不同的部分&am…

muduo

好的&#xff0c;我们来深入剖析陈硕老师开发的著名C网络库——muduo。它以“简单、高效、易用”著称&#xff0c;是学习Linux C高性能网络编程的绝佳范本。我会尽量详细、通俗地讲解其核心思想、关键组件、源码结构和工作原理。 核心思想&#xff1a;Reactor 模式 (Non-block…

将目录下所有图像中非0像素值改为1或者255

图像二值化处理技术大纲 目标与背景 解释图像二值化的意义,分析将非零像素值统一调整为1或255的应用场景(如简化数据、增强特征、适配模型输入等)。 核心方法概述 列举常见图像格式(如PNG、JPEG)的像素值范围,说明非零像素的定义(RGB或灰度图像中的非黑像素)。 方…

Reactor ConnectableFlux支持多订阅者

在 Reactor 中&#xff0c;ConnectableFlux 是一种用于处理响应式流的机制&#xff0c;它允许你控制何时开始订阅和数据生成。通常情况下&#xff0c;订阅者&#xff08;subscriber&#xff09;在订阅时会立即开始接收数据&#xff0c;但有时你可能希望多个订阅者“会面”&…

vite + vue 项目下使用 tailwindcss

版本 node: > 18.0.0 vue: 3.5.13 vite: 6.3.1 tailwindcss: 4.1.6 tailwindcss/vite: 4.1.6 tailwindcss ✅ 细粒度类库 提供数千个原子级CSS类&#xff08;如 text-center、bg-blue-500、p-4&#xff09;&#x1f9e9; 组合式开发 通过类名组合构建完全自定义的UI&#x…

Hibernate中save与saveOrUpdate的差异解析

在Hibernate中&#xff0c;save()和saveOrUpdate()都是用于持久化对象的方法&#xff0c;但它们的适用场景和行为有显著差异&#xff1a; 1. save()方法 核心行为&#xff1a; 仅适用于瞬时态&#xff08;Transient&#xff09;对象&#xff08;即新创建、未与Session关联的对象…

香橙派3B学习笔记14:deb 打包程序_解包前后脚本运行

本文学习如何用deb打包的方式打包自己需要调用系统库的程序。 然后实现deb解包前后的脚本运行。 目录 承接上文&#xff1a; 删除上文遗留的.so文件&#xff1a; 终止ledlight进程&#xff1a; 目标解释&#xff1a; 创建项目结构&#xff1a; 创建control文件&#xff1a; 创…

nanoGPT复现——prepare拆解(自己构建词表 VS tiktoken)

在nanoGPT的data文件夹有两个很相似的文件夹结构&#xff1a;shakespeare和shakespeare-char&#xff0c;这两种都是对shakespeare数据集的处理&#xff0c;但是shakespeare使用的是tiktoken对文字进行编码&#xff0c;另一个则是使用自己构建的词表 一、shakespeare-char&…

macos 安装 xcode

在 macOS 上安装 Xcode&#xff08;或者 Xcode Command Line Tools&#xff09;的方法如下&#xff1a; 1. 安装 Xcode Command Line Tools&#xff08;轻量级&#xff0c;满足大部分编译需求&#xff09; 终端命令&#xff1a; xcode-select --install会弹出安装提示&#x…