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

Git学习入门(2)- 基本命令操作总结

个人博客:我的个人博客,各位大佬来玩

1 创建 git仓库

1.1 从现有工作目录中初始化新仓库

需要到你需要用git管理的项目中输入以下命令:

git init

便会创建一个空的git项目,并且当前目录下会出现一个名为 .git 的目录, Git 需要的数据和资源都存放在这个目录中,不过我们目前只是初始化所有的文件与目录

  1. 告诉 git在这个目录中有几个文件需要版本控制。我使用了几个cpp的文件

git add *.cpp

还可以:

git add README
git commit -m 'initial project version'

你已经得到了一个实际维护着若干文件的 Git 仓库。

1.2 从现有仓库克隆

克隆某个开源项目的git仓库,可以使用 git clone 命令

例如克隆一份Ruby语言的 Git 代码仓库 ticgit可以使用下面的命令

git clone git@github.com:schacon/ticgit.git

这表示在当前文件夹下新建一个ticgit,其中包含一个 .git 的文件夹,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。

修改克隆的名字

git clone git@github.com:schacon/ticgit.git myticgit

结果如下:

在克隆的时候,我们可以选择不同的数据传输协议,在我们的例子中选择的是 ssh传输协议,你还可以有https://开头或者user@server:/path.git传输协议

2. 记录仓库更新

当我们创建了git存储库后,我们便可以在工作目录对这写文件进行更新。

在工作目录中的文件无非有两种状态:

  1. 已跟踪:已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区在克隆获取库后,工作目录的所有文件都是已跟踪的。

  1. 未跟踪:其他所有的文件都是未跟踪的,即他们既没有快照,也没有放入暂存区。在修改后 git才会把他们表示为已修改的,然后放到暂存区准备提交更新。

2.1 查看跟踪状态

输入下面的命令来查看当前工作目录的文件处于什么状态

git status

出现的情况:

  1. 当前工作目录很干净,所有已跟踪文件在上次提交后都未被更改过。

git status
On branch master
nothing to commit, working directory clean
  1. 现在让我们修改一下,比如添加一个文件(注意:需要在git克隆的仓库内执行

vim README

然后随便输入一些内容保存退出。

git status

会出现:Untracked files ,即未跟踪状态

Untracked files:(use "git add <file>..." to include in what will be committed)READMEnothing added to commit but untracked files present (use "git add" to track)

表示我们的README 处于Untracked files即未跟踪状态

未跟踪的文件意味着Git在之前的快照(提交)中没有这些文件;Git 不会自动将之纳入跟踪范围,除非你明明白白地告诉它“我需要跟踪该文件”,因而不用担心把临时文件什么的也归入版本管理。

2.2 跟踪新文件

跟踪我们上面新建的 README文件:

git add README

当我们再次 git status,会发现它处于:

**Changes to be committed,即未提交状态,它这时已经被跟踪了,但是没有提交。**即处于暂存状态

Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   README

其实 git add 的作用就是将一个文件放入暂存区域中,并且把所有未跟踪的文件或者目录变为已跟踪状态。

这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等这是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等

2.3 暂存已修改的文件

我们修改一个已经存在于历史版本的文件:README.mkd

忽略上面的内容,我们会看到这样的状态:Changes not staged for commit

Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   README.mkd

表示已经跟踪的文件发生了修改,但是还没有放在暂存区里。

要暂存这次更新,则需要执行git add(看上节关于git add的讲解)命令。

现在我们运行此命令把 README.mkd放到暂存区中:

git add README.mkd

再次status其状态得到:

Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   READMEmodified:   README.mkd

两个文件都被放在暂存区了,提交后便会被更新到仓库中


注意:如果此时你又想修改一个已经被放在暂存区的文件,则修改后会发现,出现了两个相同的文件,一个已跟踪并且放在暂存区,而另一个已跟踪未在暂存区。

Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   READMEmodified:   README.mkdChanges not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   README.mkd

这是因为 git只会暂存 执行git add后的文件,因此此时需要重新 输入此命令

git add README.mkd
Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   READMEmodified:   README.mkd

2.4 忽略某些文件

我们不想让某些文件被纳入git的管理,即他们根本不用出现在未跟踪状态下

我们创建或者修改一下 .gitignore 文件即可

vim .gitignore

修改后,查看文件如下:

$ cat .gitignore
*.gem
*.swp
*.[oa]
*~
*.log
*.tmp
*.pid
rdoc/
pkg/
  1. *.gem *.swp *.[oa] 表示我们要忽略以 gem swp o a 等后缀的文件

  1. ~ 表示 一些文件的副本,或者其他文件

  1. rdoc/ 表示的是一个 文件夹,因为它的末尾是 /

要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。(可以对一些模式取反,表示的就是忽略他们之外的文件或者目录)

2.5 查看已暂存或者未暂存的更新

查看具体修改了什么地方,可以使用下面的命令:

git diff

运行如下:

diff --git a/README b/README
index e31a6eb..0a7d6e9 100644
--- a/README
+++ b/README
@@ -1,3 +1,4 @@你好!66666hjhhhh
+我修改了一行

前面的 + 号表示我们添改了这一行的内容,- 号则表示我们删改了一行信息

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改了之后还没有暂存起来的变化


查看已经暂存的文件与上次提交的文件的差异:

首先把README先 放入暂存区

git add README

运行如下命令:即可查看

git diff --cached

简单总结:

  1. git diff:查看某个文件还没有被暂存起来的改动,其实就是显示你当前修改了什么内容,与在暂存区的内容做比较。暂存前后的变化

  1. git diff --cached:查看某个文件已经被暂存和上一次提交时的文件的内容差异已经暂存的变化

2.6 提交更新

首先检查有没有修改了但是没有被暂存的,因为提交只会提交暂存区的

检查:

git status
git add xxx # 如果还存在未暂存的目标

检查完成后,输入提交命令:

git commit

这时就会出现一个文本编辑器,并且输入本次提交的说明

我的出现了 vscode,可以按照下列的命令进行修改默认哪个编辑器:

git config --global core.editor xxxxx

默认的提交信息包括最后一次git status显示的信息

如果觉得这还不够,可以用 -v 选项将修改差异的每一行都包含到注释中来。

退出编辑器时,Git 会丢掉注释行,将说明内容和本次更新提交到仓库。

在空行输入提交信息:保存后退出

learning git use  

接着就会提示你提交成功!并且显示当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(582f005),以及在本次提交中,有多少文件修订过多少行添改和删改过

[master 582f005] learning git use3 files changed, 10 insertions(+), 1 deletion(-)create mode 100644 README
提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

使用 -m 快速添加提交信息

git commit -m 我要学习[master f949baa] 我要学习1 file changed, 2 insertions(+)

2.7 跳过暂存

使用下面的命令可以将修改的文件无需放入暂存区,即无需使用git add的命令,可以直接 提交

修改了一个文件之后,执行下面的语句:

git commit -a

即在commit的时候添加一个 -a 2.

实现快速修改提交:

git commit -a -m 跳过暂存
[master 042500c] 跳过暂存1 file changed, 2 insertions(+)

2.8 移除文件

从 Git 中移除某个不想要的文件,即从已经暂存的区域移除某个文件

输入以下命令,来删除暂存区的文件,并且直接把它从工作目录中删除,连未跟踪区域都别留下。

git rm xxx

相当于直接删除这个文件

Changes to be committed:(use "git restore --staged <file>..." to unstage)deleted:    README

如果要删除一个已经放在暂存区的文件,则必须强制删除,输入以下命令:

git rm -f xxx 

只从暂存区删除,即删除跟踪,但是不删除其本身

git rm --cached xxx

此命令删除所有 log/ 目录下扩展名为 .log 的文件

git rm log/\*.log

删除当前目录及其子目录中所有 ~ 结尾的文件。

git rm \*~

2.9 移动文件

我们想要把一个文件README.txt 改为 README ,可以使用下面的命令:

git mv README.txt README 

mv 表示 把文件从README.txt 改为 README

实际上执行了三条语句是等价的:注意README.txt一定是在暂存区域内

mv README.txt README
git rm README.txt
git add README
  1. mv命令把README.txt 改为 README,但是此时README.txt仍在暂存区,并且README在未暂存区

  1. 删除暂存区的README.txt

  1. 把README放入暂存区

实际上 git mv file_from file_to 便可以表示这一过程,无需写三条

3. 查看提交历史

演示: 首先运行命令获取项目库

git clone git://github.com/schacon/simplegit-progit.git

在此项目中运行:

git log

会出现以下内容:

commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> master, origin/master, origin/HEAD)
Author: Scott Chacon <schacon@gmail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700changed the verison numbercommit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 16:40:33 2008 -0700removed unnecessary test codecommit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gmail.com>
Date:   Sat Mar 15 10:31:28 2008 -0700first commit

git log 会按提交时间列出所有的更新,最近的更新排在最上面

每次更新都有一个 SHA-1 校验和,作者姓名电子邮箱,提交时间与提交说明


使用 -p 显示每次提交的内容差异 -2只显示最近两次:

git log -p -2

使用--word-diff获取单词层面的变化

git log -p --word-diff

使用-stat 显示简要的增改行数统计

git log --stat

每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计。


--pretty 可以指定使用完全不同于默认格式的方式展示提交历史

git log --pretty=xxx

xxx可以为:oneline,short,full,fuller

format 定制显示的格式,相当于debug

git log --pretty=format:"%h - %an, %ar : %s"
说明:
选项 说明 %H 提交对象(commit)的完整哈希字串 %h 提交对象的简短哈希字串 %T 树对象(tree)的完整哈希字串 %t 树对象的简短哈希字串 %P 父对象(parent)的完整哈希字串 %p 父对象的简短哈希字串 %an 作者(author)的名字 %ae 作者的电子邮件地址 %ad 作者修订日期(可以用 -date= 选项定制格式) %ar 作者修订日期,按多久以前的方式显示 %cn 提交者(committer)的名字 %ce 提交者的电子邮件地址 %cd 提交日期 %cr 提交日期,按多久以前的方式显示 %s 提交说明

log 的后面参数的其他选择

选项 说明 -p 按补丁格式显示每个更新之间的差异。 --word-diff 按 word diff 格式显示差异。 --stat 显示每次更新的文件修改统计信息。 --shortstat 只显示 --stat 中最后的行数修改添加移除统计。 --name-only 仅在提交信息后显示已修改的文件清单。 --name-status 显示新增、修改、删除的文件清单。 --abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 --relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。 --graph 显示 ASCII 图形表示的分支合并历史。 --pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。 --oneline `--pretty=oneline --abbrev-commit` 的简化用法

--since 和 --until 对时间作出限制

显示最近两周的提交:

git log --since=2.weeks

其他选择:

选项 说明 -(n) 仅显示最近的 n 条提交 --since, --after 仅显示指定时间之后的提交。 --until, --before 仅显示指定时间之前的提交。 --author 仅显示指定作者相关的提交。 --committer 仅显示指定提交者相关的提交。

4. 撤销操作

4.1 修改最后一次操作

如果在提交后,发现提交信息写错了,或者漏掉几个文件没有加,则可以这样修改:

git commit --amend

如果还没有暂存文件就提交了,则可以这样操作:

git commit # 提交了
git add file
git commit --amend

上面的三条命令最终只是产生一个提交,第二个提交命令修正了第一个的提交内容。

4.2 取消暂存中的文件

我们有多个文件还未暂存,但是我们不小心一次性全部放入暂存了

git add .

但是我们想一个一个放,不能一次性放入,因此我们使用这两条命令(git status显示的内容有说明):

git reset HEAD file

HEAD表示上一个版本 HEAD^ HEAD^^ ....

git store --staged file

4.3 取消对文件的修改

我们不想对这个文件进行修改了,让他回到一开始的状态:

git checkout -- benchmarks.rb
你可能已经意识到了,这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改。如果只是想回退版本,同时保留刚才的修改以便将来继续工作,可以用下章介绍的 stashing 和分支来处理,应该会更好些。

5. 远程管理仓库

管理远程仓库的工作,包括添加远程库移除废弃的远程库管理各式远程库分支定义是否跟踪这些分支

5.1 查看当前远程库

查看当前配置有哪些远程库

git remote

注意:默认存在一个 origin的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库。

显示原始仓库的克隆地址

git remote --v

如果有多个远程仓库,此命令将全部列出。

5.2 添加远程仓库

要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用:

git remote add pb  git://github.com/paulboone/ticgit.git

添加了一个 远程仓库 名称为 pb

pb代表的就是远程仓库的地址

抓取仓库地址:

git fetch pb

Paul 的主干分支(master)已经完全可以在本地访问了,对应的名字是 pb/master,你可以将它合并到自己的某个分支,或者切换到这个分支,看看有些什么有趣的更新。

5.3 从远程仓库抓取数据

使用下面的命令从远程仓库抓取数据到本地

git fetch <remote-name>

此命令从远程仓库中拉取所有你本地仓库中还没有的数据


抓取从你上次克隆这个仓库以来,别人上传到此仓库中的所有更新:

git fetch origin

有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。

5.4 推送数据到远程仓库

项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。

git push [remote-name] [branch-name]

把本地的branch分支推送到远程 remote 服务器上

5.5 查看远程仓库信息

命令:

git remote show [remote-name]

查看某个远程仓库的信息

它友善地告诉你如果是在 master 分支,就可以用 git pull 命令抓取数据合并到本地。

另外还列出了所有处于跟踪状态中的远端分支

5.6 远程仓库的删除与重命名

修改某个远程仓库在本地的名称

git remote rename pb pbnewname

对远程仓库的重命名,也会使对应的分支名称发生变化。

删除对应的远程仓库:

git remote rm pbname

6. 打标签

在某一时间点上打上标签

git的标签类型:

  1. 轻量型标签:是个不会变化的标签,只指向某个特定对象的引用

  1. 含附注的标签:存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明。

6.1 显示所有标签

git tag

标签按字母顺序排列,所以标签的先后不表示重要程度的轻重.

筛选标签

git tag -l 'v1.4.2.*'

6.2 创建标签

创建含附注的标签:-a 后附带标签的名字

git tag -a v1.4 -m 'my version 1.4'

-m表示指定对应的标签说明,如果没有 -m后面的内容,则会跳转到vscode让你手动编写 标签说明

使用下面的命令来显示标签对应的信息:

git show v1.4

列出了此标签的提交者和提交时间,以及相应的标签说明。

创建个人的私钥

git tag -s v1.5 -m 'my signed 1.5 tag'

创建轻量级标签,直接给出标签的名字即可

git tag v1.8

6.3 加注标签

已经提交的版本中补上标签信息

首先显示所有的版本

git log --pretty=oneline

可以看到 没有标签,我们输入命令,让其中一个版本加上标签:

git tag -a v1.9 085bb3b

注意:直需要加上校验和的前几位即可,git就会识别这是哪一个版本。

显示我们刚加的标签:

git show v1.9

6.4 分享标签

通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可:

git push origin v1.5

一次性推送所有的本地标签上去:

git push origin --tags

7. Git使用技巧

7.1 自动补全

首先可以查看自己的 Git 有没有自动补全的功能,如下操作所示:

git con<tab>

输入git co 然后 按两次tab键,会出现提示的命令: config 和commit

如果上述办法不可以,则需要进行如下操作:

如果你用的是 Bash shell,可以试试看 Git 提供的自动补全脚本。下载 Git 的源代码,进入 contrib/completion 目录,会看到一个 git-completion.bash 文件。将此文件复制到你自己的用户主目录中(译注:按照下面的示例,还应改名加上点:cp git-completion.bash ~/.git-completion.bash),并把下面一行内容添加到你的 .bashrc 文件中:
source ~/.git-completion.bash
也可以为系统上所有用户都设置默认使用此脚本。Mac 上将此脚本复制到 /opt/local/etc/bash_completion.d 目录中,Linux 上则复制到 /etc/bash_completion.d/ 目录中。这两处目录中的脚本,都会在 Bash 启动时自动加载。

7.2 使用别名

为命令起一个别名: git config

git config --global alias.st status

接下来输入

git st

其实就是

git status 

取消在暂存区的文件完整命令如下:

git reset HEAD file

可以使用别名:

git config --global alias.unstage 'reset HEAD --'
git unstage file

显示最后一次提交的文件,完整命令如下

git log -1 HEAD

可以使用别名,看起来会更清晰

git config --global alias.last 'log -1 HEAD'
git last

Git 只是简单地在命令中替换了你设置的别名

输入Git外部命令

git config --global alias.visual '!gitk'
git visual 

相关文章:

Git学习入门(2)- 基本命令操作总结

个人博客&#xff1a;我的个人博客&#xff0c;各位大佬来玩1 创建 git仓库1.1 从现有工作目录中初始化新仓库需要到你需要用git管理的项目中输入以下命令&#xff1a;git init便会创建一个空的git项目&#xff0c;并且当前目录下会出现一个名为 .git 的目录&#xff0c; Git 需…...

SPringCloud:Nacos快速入门及相关属性配置

目录 一、Nacos快速入门 1、在父工程中添加spring-cloud-alilbaba的管理依赖 2、如果有使用eureka依赖&#xff0c;将其注释 3、添加nacos的客户端依赖 4、修改yml文件&#xff0c;注释eureka配置 5、启动测试 二、Nacos相关属性配置 1、Nacos服务分级存储 2、根据集群…...

医疗器械之模糊算法(嵌入式部分)

模糊控制 所谓模糊控制&#xff0c;就是对难以用已有规律描述的复杂系统&#xff0c;采用自然语言&#xff08;如大&#xff0c;中&#xff0c;小&#xff09;加以描述&#xff0c;借助定性的&#xff0c;不精确的以及模糊的条件语句来表达&#xff0c;模糊控制是一种基于语言的…...

网上销售笔记本系统

技术&#xff1a;Java、JSP等摘要&#xff1a;本文讲述了基于B/S模式的笔记本电脑在线销售系统的设计与实现。所谓的笔记本电脑在线销售系统是通过网站推广互联企业的笔记本电脑和技术服务&#xff0c;并使客户随时可以了解企业和企业的产品&#xff0c;为客户提供在线服务和订…...

MySQL基础查询操作

文章目录&#x1f68f; Select语句&#x1f680; 一、SQL底层执行原理&#x1f6ac; &#xff08;一&#xff09;、查询的结构&#x1f6ac; &#xff08;二&#xff09;、SQL语句的执行过程&#x1f6ad; 1、WHERE 为什么不包含聚合函数的过滤条件&#xff1f;&#xff08;面试…...

English Learning - L2 语音作业打卡 小元音 [ʌ] [ɒ] Day9 2023.3.1 周三

English Learning - L2 语音作业打卡 小元音 [ʌ] [ɒ] Day9 2023.3.1 周三&#x1f48c;发音小贴士&#xff1a;&#x1f48c;当日目标音发音规则/技巧:&#x1f36d; Part 1【热身练习】&#x1f36d; Part2【练习内容】&#x1f36d;【练习感受】&#x1f353;元音 [ʌ]&…...

Condition 源码解读

一、Condition 在并发情况下进行线程间的协调&#xff0c;如果是使用的 synchronized 锁&#xff0c;我们可以使用 wait/notify 进行唤醒&#xff0c;如果是使用的 Lock 锁的方式&#xff0c;则可以使用 Condition 进行针对性的阻塞和唤醒&#xff0c;相较于 wait/notify 使用…...

看完这篇入门性能测试

大家好&#xff0c;我是洋子。最近组内在进行服务端高并发接口的性能压测工作&#xff0c;起因是2023年2月2日&#xff0c;针对胡某宇事件进行新闻发布会直播&#xff0c;几十万人同时进入某媒体直播间&#xff0c;造成流量激增 从监控上可以看出&#xff0c;QPS到达某峰值后&…...

推导部分和——带权并查集

题解&#xff1a; 带权并查集 引言&#xff1a; 带权并查集是一种进阶的并查集&#xff0c;通常&#xff0c;结点i的权值等于结点i到根节点的距离&#xff0c;对于带权并查集&#xff0c;有两种操作需要掌握——Merge与Find&#xff0c;涉及到路径压缩与维护权值等技巧。 带…...

费解的开关/翻硬币

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a; 算法 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 题目&#xff1a;费解的开关 你玩过“拉灯”游戏吗&#xff1f; 25盏灯排成一个 55 的方形。 每一个灯都有一个开关&…...

OpenGL中的坐标系

1、2D笛卡尔坐标系2D笛卡尔坐标系跟我们高中的时候学习的坐标系一样&#xff0c;是由x、y决定的。2、3D笛卡尔坐标系3D笛卡尔坐标系坐标由x、y、z决定&#xff0c;满足右手定则。3、视口glViewport(GLint x,GLint y,GLsizei width,GLsizei height)窗口和视口大小可以相同&#…...

Spring——Spring介绍和IOC相关概念

Spring是以Spring Framework为核心&#xff0c;其余的例如Spring MVC&#xff0c; Spring Cloud&#xff0c;Spring Data&#xff0c;Spring Security SpringBoot的基础都是Spring Framework。 Spring Boot可以在简化开发的基础上加速开发。 Spring Cloud分布式开发 Spring有…...

A+B Problem

AB Problem 题目描述 输入两个整数 a,ba, ba,b&#xff0c;输出它们的和&#xff08;∣a∣,∣b∣≤109|a|,|b| \le {10}^9∣a∣,∣b∣≤109&#xff09;。 注意 Pascal 使用 integer 会爆掉哦&#xff01;有负数哦&#xff01;C/C 的 main 函数必须是 int 类型&#xff0c;…...

【ROS学习笔记11】ROS元功能包与launch文件的使用

【ROS学习笔记11】ROS元功能包与launch文件的使用 文章目录【ROS学习笔记11】ROS元功能包与launch文件的使用前言一、ROS元功能包二、ROS节点运行管理launch文件2.1 launch文件标签之launch2.2 launch文件标签之node2.3 launch文件标签之include2.4 launch文件标签之remap2.5 l…...

【python】

print函数 同时输出多行变量 print(a, b, sep\n) (23条消息) python3 中print函数参数详解&#xff0c;print(*values, sep , end\n, filesys.stdout, flushFalse)中参数介绍_sep,_phantom-dapeng的博客-CSDN博客 input() 输入浮点数&#xff0c;不能用int(input()) int()…...

充电协议: 快充协议,如何选充电宝?

快充协议(存在两种&#xff1a;电压; 电流) 目前市面上的快充技术大多遵循2个技术方向&#xff1a; 以高通QC、联发科PEP、华为FCP为首的高压低电流快充技术&#xff1b; 另一种就是以OPPO的VOOC以及华为SCP为首的低电压大电流快充技术。 目前常见的快充标准还有三星AFC、联发…...

视觉SLAM十四讲ch6 非线性优化笔记

视觉SLAM十四讲ch6 非线性优化笔记本讲目标上讲回顾状态估计问题非线性最小二乘Gauss-Newton&#xff1a;高斯牛顿Levenburg-Marquadt&#xff1a;列文伯格-马夸尔特小结实践&#xff1a;CERES实践&#xff1a;G2O本讲目标 理解最小二乘法的含义和处理方式。 理解Gauss-Newton…...

Nikto工具使用指南

NiktoNikto是一款开源网站服务器扫描器&#xff0c;使用Perl开发&#xff0c;可以对服务器进行全面扫描&#xff0c;包括6400多个潜在危险的文件/cgi(通用网关接口&#xff08;Common Gateway Interface&#xff09;),废话不多说&#xff0c;直接上命令&#xff1a;基本测试&am…...

Git(4)之基本工具

Git基础之基本工具 Author&#xff1a;onceday date&#xff1a;2023年3月5日 满满长路有人对你微笑过嘛… windows安装可参考文章&#xff1a;git简易配置_onceday_CSDN博客 參考文档&#xff1a; 《progit2.pdf》&#xff0c;Progit2 Github。《git-book.pdf》 文章目录…...

好书推荐。

个人喜欢看传记&#xff0c;散文&#xff0c;历史等 二战名人传记&#xff0c;苏联列宁&#xff0c;朱可夫&#xff0c;斯大林等 英国首相丘吉尔&#xff0c;美国富兰克林&#xff0c;中国毛泽东等 创业&#xff1a;比尔盖&#xff0c;扎克伯格&#xff0c;苹果公司创始人乔…...

[Pytorch]DataSet和DataLoader逐句详解

将自己的数据集引入Pytorch是搭建属于自己的神经网络的重要一步&#xff0c;这里我设计了一个简单的实验&#xff0c;结合这个实验代码&#xff0c;我将逐句教会大家如何将数据引入DataLoader。 这里以目标检测为例&#xff0c;一个batch中包含图片文件、先验框的框体坐标、目标…...

【Kettle-佛系总结】

Kettle-佛系总结Kettle-佛系总结1.kettle介绍2.kettle安装3.kettle目录介绍4.kettle核心概念1.转换2.步骤3.跳&#xff08;Hop&#xff09;4.元数据5.数据类型6.并行7.作业5.kettle转换1.输入控件1.csv文件输入2.文本文件输入3.Excel输入4.XML输入5.JSON输入6.表输入2.输出控件…...

JavaSE网络编程

JavaSE网络编程一、基本概念二、常用类三、使用方法1、创建服务器端Socket2、创建客户端Socket3、创建URL对象JavaSE中的网络编程模块提供了一套完整的网络编程接口&#xff0c;可以方便地实现各种基于网络的应用程序。本文将介绍JavaSE中网络编程模块的基本知识、常用类以及使…...

9万字“联、管、用”三位一体雪亮工程整体建设方案

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用。部分资料内容&#xff1a; 1、 总体设计方案 围绕《公共安全视频监控建设联网应用”十三五”规划方案》中的总体架构和一总两分结构要求的基础上&#xff0c;项目将以“加强社会公共安全管理&#xff0c;提高…...

springboot自动装配原理

引言 springboot的自动装配是其重要特性之一&#xff0c;在使用中我们只需在maven中引入需要的starter&#xff0c;然后相应的Bean便会自动注册到容器中。例如&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spr…...

Docker学习(二十)什么是分层存储?

目录1.简介2.什么是 Union Mount&#xff1f;3.分层介绍1&#xff09;lowerdir 层&#xff08;镜像层&#xff09;2&#xff09;upperdir 层&#xff08;容器层&#xff09;3&#xff09;merged 层4.工作原理1&#xff09;读&#xff1a;2&#xff09;写&#xff1a;3&#xff…...

Vue组件进阶(动态组件,组件缓存,组件插槽,具名插槽,作用域插槽)与自定义指令

Vue组件进阶与自定义指令一、Vue组件进阶1.1 动态组件1.2 组件缓存1.3 组件激活和非激活1.4 组件插槽1.5 具名插槽1.6 作用域插槽1.7 作用域插槽使用场景二、自定义指令2.1 自定义指令--注册2.2 自定义指令-传参一、Vue组件进阶 1.1 动态组件 多个组件使用同一个挂载点&#x…...

僵尸进程与孤儿进程

概念 在 Unix/Linux 系统中&#xff0c;正常情况下&#xff0c;子进程是通过父进程创建的&#xff0c;且两者的运行是相互独立的&#xff0c;父进程永远无法预测子进程到底什么时候结束。当一个进程调用 exit 命令结束自己的生命时&#xff0c;其实它并没有真正的被销毁&#…...

基于注解@Transactional事务基本用法

关于概念性的放在最下面,熟读几遍 在使用时候也没多关注,总是加个Transactional 初识下 一般查询 Transactional(propagation Propagation.SUPPORTS) 增删改 Transactional(propagation Propagation.REQUIRED) 当然不能这么马虎 Spring中关于事务的传播 一个个测试,事…...

Go项目(商品微服务-2)

文章目录简介handler商品分类轮播图品牌和品牌与分类oss前端直传库存服务数据不一致redis 分布式锁小结简介 开发商品微服务 API 层类似的&#xff0c;将 user-web 目拷贝一份&#xff0c;全局替换掉 user-web修改 config 去掉不用的配置更新本地和远程 nacos 配置文件 把 pro…...