GIT 常用命令整理

2023-11-07

常用git命令,欢迎大家参考!

1. git介绍

git与svn一样都是基于仓库来管理代码的,不过git的仓库在客户端和服务端都是存在的,我们通常都是在本地进行代码commit,然后再提交到远端服务器仓库的;而svn的话,差不多相当于大家一群人都在仓库远端的一个仓库,在本地进行commit,马上主动推送到远端仓库,灵活性稍差点;

2. 在本地生成一个仓库(一般就是一个项目等)

A:本地初始化一个文件夹为一个仓库,让git把这个文件夹当作一个仓库进行操作;

  1. git init
  2. git remote add origin git@github.com:Hinsteny/Test.git
    为刚刚初始化的仓库添加一个远程仓库联系,这样我们就能把本地的代码提交到远程了哈

B:直接在本地clone一个远程仓库,即把远程仓库的所有受管理文件复制到本地,然后进入仓库根目录就可以进行相关操作,比如修改(编写自己的代码),推送(更新自己的代码到远程服务器);

  1. git clone git@github.com:Hinsteny/Test.git
  2. cd Test
    现在就能在修改clone下的仓库(Test里面)下面的文件了。

3. 对本地仓库内容进行修改

A:git在本地修改时是基于branch进行操作的,每个branch可以保留不一样的副本;

  1. 新建分支: git branch branch_name
  2. 查看本地所有分支列表: git branch -a
  3. 切换到要进行操作的分支: git checkout branch_name
  4. 跳过创建分支的步骤,直接创建(clone当前分支)并切换到新分支: git checkout -b branch_name
  5. 跳过创建分支的步骤,直接创建(以指定的tag为分支版本)并切换到新分支: git checkout -b branch_name tag_name

B:在当前分支上,对受管理的文本文件做一些修改,然后就可以commit到当前分支上;

  1. 先把修改添加到缓存: git add file_url_name (只是添加一个文件,git add . 命令可以把当前分支上的所有修改添加到缓存)
  2. 把已经添加到缓存的内容进行commit: git commit -m “commit_content”
  3. 此时就可以把当前分支的内容进行推送或者检出打包,合并等操作了。

4. 提交本地代码到远程仓库

把本地的[local_branch]上的内容更新到[remote_name]仓库的[remote_brnach]上面;

git push [remote_name] [local_branch]:[remote_brnach]

remote_name:某个远端的remote地址在本地对应的名称;
local_branch:本地仓库的某个分支名称;
remote_brnach:远端仓库的某个分支名称;
注:上面命令可以简写为 “git push”,默认为 “oringin, local/master, origin/master”, 设置本地的某个分支为本地的master分支的命令是:git push --set-upstream oringin/master

5. 推送内容和拉取远程的内容到本地

  1. git push [remote_name] [local_branch]:[remote_brnach]

  2. git pull [remote_name] [remote_brnach]:[local_branch]

  3. git fetch [remote_name] [remote_brnach]:[local_branch]

6. 本地修改的相关操作

  1. 取消对文件的修改。放弃未提交的修改,还原到最后一次commit后的状态。
  git checkout -- [file-path-name]
  1. 还原被加入缓存状态文件的状态。即,撤销之前的add file-path-name 操作
  git reset -- [file-path-name] (git reset HEAD -- [file-path-name])
  1. 还原所有被加入缓存状态文件的状态。即,撤销之前的add . 操作
  git reset (git reset HEAD)
  1. 撤销本地某个文件的修改
  git checkout -- filename
  1. 撤销所有本地文件的修改
  git checkout -- . (git checkout .)
  1. 当前工作区内容不变,但是暂存区会回退到上一次提交之前
  git reset head^
  1. 回退某个文件的版本到上一个版本
  git reset HEAD^ [file-path-name]
  1. 向前回退到第X个版本
  git reset --soft HEAD~3 
  1. 将本地的状态回退到和远程的某个分支一样
   git reset --hard origin/master  
  1. 回退到某个具体的版本
  git reset version-number

7. 回滚本地提交

  1. git reset --hard commit-id: 强制把当前分支回滚到所指定的commit记录;
    git reset --hard HEAD~3: 将最近3次的提交回滚;
  2. git reset --soft head^: 将最近1次的提交软回滚;
    git reset --soft head~3:将最近3次的提交软回滚;

注: hard方式的回滚会直接抹消被回滚的commit的修改;而soft方式的话,只会把当前分支的commit指向回滚到的位置,然后被回滚的所有commit的修改会依然保存在本地,以git缓存的方式存在;

8. 合并冲突

  1. git merge [branch_name] :把当前分支与目标分支合并,把当前分支的内容与目标分支的内容进行对比列出区别,手动解决冲突后进行commit,所以最后会有一个“Merge branch”的commit哈
    解决完冲突后,在commi历史中会多一个merge的commit,里面可能包含一些冲突解决时代码的取舍痕迹。
  2. git rebase [branch_name] :把当前分支与目标分支合并,把当前分支超前的commit追加到目标分支的commit之后
    解决完冲突后,在commit历史上看不出有合并的痕迹。

9. 打包本地的commit生成相关commit文件以便直接传送补丁

  1. git format-patch -[number] :number表示打包的补丁从最后一次commit向前数一共生成多少个commit的补丁。执行完命令后,会在当前仓库的根目录下生成对应的补丁文件(文件名称一般会包含一部分commit的描述内容,方便区分)。
    git format-patch –[number] commit-id :某次提交之前的所有patch
    git format-patch -M master :打包当前分支所有超前master的commit
    git format-patch -s commit-id :某次提交以后的所有patch
  1. git apply --stat patch_url :检查一个补丁文件的状态,会看到这个补丁里面包含哪些修改的内容概括
  2. git apply --check patch_url :检查一个补丁文件是否可以成功打补丁到当前分支上面(可以的话,就可以直接应用补丁成功;否则进行应用的补丁过程中就需要解决冲突哈)
  3. git am patch_url :把一个补丁文件里面的修改应用到当前分支上面哈

10. 合并时,如果有冲突如何解决?

  1. 在使用 “git rebase” 命令时,当不能顺利的进行合并时,那就是有冲突了,这个时候就定位到两个分支有冲突的公共地方,主动的进行取舍保留,确定好要保存的版本快照后,回到命令行,执行 "git add ."把解决分支产生的修改添加到缓存中,然后再执行 “git rebase --continue”,完美解决冲突,哈哈
  2. 在使用 “git am” 命令时,当不能顺利的把补丁文件应用到当前分支上时,那就是有冲突了,这个时候就定位到有冲突的公共地方,主动的进行取舍保留,确定好要保存的版本快照后,回到命令行,执行 "git add ."把解决分支产生的修改添加到缓存中,然后再执行 “git am --continue”,就这么解决冲突,哈哈

11. git库所在的文件夹(即.git所在的文件夹)中的文件包含四种状态。

  1. untracked:未跟踪,此文件在文件夹中,但并没有加入git库,不参与版本控制。 通过”git add”,”git commit”可将它置入版本管理库。
  2. unmodify:文件已经库中,未修改,即版本库中的文件快照内容与文件夹中完全一致。这种类型的文件有两个去处,如果它被修改,而成为modified。如果使用”git rm”移出版本库,则成为untracked文件。
  3. modified:文件已修改,仅仅是修改,并没有进行其它操作。这个文件也有两个去处,通过”git add”可进入暂存(staged)状态,使用”git checkout”则丢弃修改,返因到unmodify状态。这个checkout很好理解,就是取出库中文件,覆盖当前文件吧。
  4. staged:暂存状态。执得”git commit”则将修改同步到库中,这时库中的文件与本地文件又一致了,于是文件是unmodify状态。执行”git reset HEAD filenam”取消暂存,文件状态变为modified。

注:如果你是用在wins下面,适用powershell打开git shell命令行,那这几种状态可以随时看到的,“untracked"一般是红色的”+number"(数字表示有多少个文件未被加入版本库),“unmodify"就是正常状态,没什么特别显示,“modified"一般是红色的”~number”(数字表示有多少个文件被修改了),"staged"一般是绿色的(表示对应的文件已经被加入了git暂存中);

12. 撤销本地工作目录中当前分支上的修改

  1. git reset --hard origin/master :强制回滚到master分支的最后一次commit,这种方法就是找一个历史节点进行强制状态回滚。这个操作会清除"修改,删除"两种更改,但不会清除"添加"这种修改;(并不提倡这种方式)
  2. git checkout – . :这个操作会清除当前分支上的"修改,删除"两种更改,但不会清除"添加"这种修改;这个命令也可以是"git checkout – file_url",针对性的对某个文件进行修改撤销,但是它依然不能对一个新增加的文件进行撤销,猜测可能是因为新加文件还没有被纳入git版本管理中去,没有历史快照给它做参考进行回滚撤销(git对工作目录中未加入版本管理的文件好像没有删除的命令,这里可以用系统的删除命令进行删除,rm);
  3. git reset HEAD file_url :将对应已经加入git暂存的文件恢复到modified状态;

13. git tag(标签),可以在一定的时期对commit设置历史关键点,常常用来进行标志版本发布点.

  1. git tag (-l): 显示当前版本库的所有标签列表.
  2. git tag tag_name: 截止当前分支最后一个commit创建一个新的tag.
  3. git tag -a tag_name -m 'tag_commit′: 创建一个带备注信息的tag.
  4. git push --tags: 把本地的所有标签推送到远程服务器上面.
  5. git show tag_name: 显示一个tag一些相关信息.
  6. git tag -d tag_name: 删除本地的一个tag.
  7. git push origin :refs/tags/tag_name: 删除远端的一个tag.

14. git log,查看历史提交的commit内容.

  1. git log : 显示当前分支的历史commit内容.
  2. git log --stat : 显示当前分支的历史commit内容和每次commit对应修改了哪些文件.

15. git stash,强大的当前工作状态暂存方式.

  1. git stash save “name” : 把当前工作目录的所有修改添加到一个stash记录里面.
  2. git stash pop “stash-index” : 把某个index的stash记录加载(弹出)到当前工作目录(同时stash列表里移除对应的记录)。
  3. git stash apply “name” : 把某个index的stash记录加载(应用)到当前工作目录(同时stash列表里依旧保留对应的记录)。
  4. git stash drop “stash-index” : 移除掉某个index对应的stash记录。

应用场景:比如自己正在开发一个功能,突然接到修改一个紧急bug的任务, 就可以先暂存自己的工作状态, 修改完bug后, 返回到自己的工作进度.

16. 版本管理中对文件的忽略

  1. gitignore 文件 : 在项目的根目录下的.gitignore为全局的文件过滤设置,即会影响本地和远程。
  2. exclude 文件: 位于 {项目路径}/.git/info/exclude. 该文件主要用于忽略不想加入版本控制的文件而又不影响远端。只影响本机的文件忽略配置。
  3. 命令忽略 : 只对指定路径文件有效(对文件夹无效)
//设置某个文件暂时不参与版本管理(但是远程修改它更新到本地可能会有冲突需要解决)
git update-index --assume-unchanged <file-path>  

//设置某个文件恢复参与版本管理
git update-index --no-assume-unchanged  <file-path>  

17. git clone big repositories 很慢或者发生异常终止情况如何处理

如果我们通过 git clone https://xxxx 克隆一个比较大的仓库时, 有可能就会发生异常终止的情况, 类似

.............
remote: Compressing objects: 100% (3256/3256), done.
fatal: read error: Invalid argument, 255.05 MiB | 1.35 MiB/s
fatal: early EOF
fatal: index-pack failed

解决方法如下:

# 关闭压缩设置
git config --global core.compression 0
# 浅层次目录clone
git clone --depth 1 <repo_URI>
# 获取所有历史记录
git fetch --unshallow
# 获取所有内容
git pull --all

18. 查看内容列表信息

如果我们要看一下某个git-project工程目录下的文件树列表信息,就可以用这些命令,可以看到文件的读写执行权限,类型,签名等信息

# 列出当前目录所有文件信息
git ls-tree HEAD

# 列出当前目录所有文件信息及子目录文件信息
git ls-tree -r HEAD

# 列出当前目录所有文件夹信息
git ls-tree -d HEAD

# 列出指定目录下的所有文件信息
git ls-tree -r HEAD:sub-dir

19. commit 摘取

把其他分支中的某个commit记录摘取到当前分支

#  
git cherry-pick <commit id>

20. commit 合并

有时我们在本地开发时会按照小功能分别进行多次commit, 最后在往远端push时想把多个commit合并成一个commit其中包含一个完整或者大的功能开发;

  1. 在本地分支(test_rebase_commit_merge)上进行多个commit
git log
------------------
# Commit D
# Commit C
# Commit B
# Commit A
  1. 使用git rebase -i命令进行commit合并
# 修改当前分支最近的三个commit
git rebase -i HEAD~3
-------------------
pick 3c0d9fd # Commit B
pick 3793e85 # Commit C
pick 79513ca # Commit D

# Rebase 44edb14..79513ca onto 44edb14 (3 commands)
#
# Commands:
# p, pick <commit> = use commit
# r, reword <commit> = use commit, but edit the commit message
# e, edit <commit> = use commit, but stop for amending
# s, squash <commit> = use commit, but meld into previous commit
# f, fixup <commit> = like "squash", but discard this commit's log message
# x, exec <command> = run command (the rest of the line) using shell
# b, break = stop here (continue rebase later with 'git rebase --continue')
......
  1. 修改最上面三个commit 的处理方式
pick 3c0d9fd # Commit B
squash 3793e85 # Commit C
squash 79513ca # Commit D

# Rebase 44edb14..79513ca onto 44edb14 (3 commands)
......

修改后:wq保存退出

  1. 然后进入写一个新commit-content的界面
# This is a combination of 3 commits.
# This is the 1st commit message:

# Commit B

# This is the commit message #2:

# Commit C

# This is the commit message #3:

# Commit D

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# Date:      Mon Dec 2 15:32:11 2019 +0800
#
# interactive rebase in progress; onto 44edb14

上面说了让我们重写写个合并后的commit-content, 不能以#开头(#开头的是注释), 我们就到内容的最下面新起一行, 写个Merge commit content, 最后:wq保存退出

  1. 查看合并后的commit内容
Merge commit content
# Commit A

21. 修改git commit的username和email

我们既可以给一个git项目配置user.name和email, 也可以设置本地全局的user.name和email, 项目的配置优先于全局的, 默认项目配置来着全局;

  1. 配置全局的user.name和email
git config --global user.name 'Hinsteny'
git config --global user.email 'hinsteny@gmai.com'
  1. 配置一个项目的user.name和email
git config user.name 'Hinsteny'
git config user.email 'hinsteny@gmai.com'
  1. 修改一个项目中历史commit中的user.name和email
    在项目根目录中创建一个change.sh文件, 内容如下
#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="hinsteny@qq.com"
CORRECT_NAME="Hinsteny"
CORRECT_EMAIL="hinsteny@gmai.com"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
  1. 如果脚本执行失败,可以先执行下面的命令,然后再执行脚本
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch Rakefile' HEAD
  1. 本地执行git log, 可以看到已经修改过来了, 接下来push到远端仓库
git push origin -f

22. 查看指定两个分支上commit的差异

上面案例19中我们使用cherry-pick摘取指定commit记录到当前分支upstream, 有时候我们想将指定分支中的某几个commit(a, b, c)合并进当前分支,但是又忘记了已经合并了哪些又有哪些没合并,这时就可以比较下,轻松查看合并情况

git cherry -v master feature_user | grep +

23. 删除历史指定commit

有时候我们需要删除历史的某个commit内容,不需要那个commit包含的修改了,但是在它之前、之后的内容我们还是需要的,如下
历史commit有a, b, c, d…,我们需要删除b和c

git rebase -i [d-id]93c98006ac396611a753766e0ce7fa2fd4420b0a

进行commit编辑页面

pick [a-id]
pick [b-id]
pick [c-id]

按键’i’,进行编辑

pick [a-id]
drop [b-id]
drop [c-id]

按键’esc’,输入’!wq’保存变更并退出编辑;
再次查看git commit log,发现只剩a,d,而b,c已经不在了;

git log

PS: 待续

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GIT 常用命令整理 的相关文章

  • Vue 在for循环中动态添加类名及style样式集合

    介绍 在vue的 for 循环中 经常会使用到动态添加类名或者样式的情况 实现给当前的选中的 div 添加不同的样式 动态添加类名 提示 所有动态添加的类名 放在表达式里都需要添加引号 进行包裹 通过 对象 的形式 使用花括号进行包裹 使用
  • 信号处理在matlab常用函数

    stem Y 将数据序列Y从x轴到数据值按照茎状形式画出 以圆圈终止 如果Y是一个矩阵 则将其每一列按照分隔方式画出 stem X Y 在X的指定点处画出数据序列Y stem filled 以实心的方式画出茎秆 stem LINESPEC
  • LeetCode:二叉树的属性(13道经典题目)

    LeetCode 二叉树的属性 13道经典题目 本文带来与二叉树的属性有关的经典题目 主要实现是C 题目 题目 101 对称二叉树 100 相同的树 572 另一棵树的子树 104 二叉树的最大深度 559 N 叉树的最大深度 111 二叉
  • C++:在Visual C++ 6.0中创建工程项目

    在Visual C 6 0中创建工程项目 在利用一个新的集成开发环境之前 首先要懂得如何创建一个工程项目 而本文接下来要讲述的就是如何在经典的C 编程环境Visual C 6 0中创建工程项目 工具 原料 电脑 Visual C 6 0 方
  • 十、【服务器】服务器软件及协议 名称中英文汇总1

    涉及到的软件和协议其实非常多 后续遇到重要的再添加更新 Level 1 Level 2 Level 3 服务器软件及协议 名称汇总 中英文 基本输入输出系统 BIOS Basic Input Output System 基板管理控制器 BM
  • 51单片机与PC串口通信程序及硬件电路图

    51单片机与PC串口通信程序及硬件电路图 2008年03月19日 星期三 21 35 include
  • Win7中出错:无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-

    安装完 Python 后 配置好 Python 目录于 Path 然后 CMD 命令下输入 python 验证是否配置成功 但是竟然出现结果跳出对话框 出错 无法启动此程序 因为计算机中丢失api ms win crt runtime 1
  • HashMap底层实现原理及面试问题

    一 HashMap的工作原理 HashMap基于hashing原理 我们通过put 和get 方法储存和获取对象 当我们将键值对传递给put 方法时 它调用键对象的hashCode 方法来计算hashcode 让后找到bucket位置来储存
  • 查看linux主机启动时间(转载)

    1 查看 proc uptime root master1565 cat proc uptime 673 83 1327 68 root master1565 date d cut f1 d proc uptime seconds ago
  • 抖音直播录制工具

    抖音无法监测开播 抖音采集工具 软件出现未响应 闪退 并且会出现一个无名主播文件夹 以前都是主播名字 再打开软件就提示 Failed to execute script main 删除无名主播文件夹 软件又可以正常打开 新添主播 又出现未响
  • 常用的软件测试工具大全

    开源测试管理工具 Bugfree Bugzilla TestLink mantis 开源功能自动化测试工具 Watir Selenium MaxQ WebInject 开源性能自动化测试工具 Jmeter OpenSTA DBMonster
  • 在unity中如何实现视频播放暂停停止重播功能

    在Unity中实现视频播放 暂停 停止和重播功能 可以通过以下步骤实现 将视频文件导入Unity项目中 并将其设置为资源 创建一个新的Unity游戏对象 并将Video Player组件添加到该对象上 将视频文件设置为Video Playe
  • vue动态修改标签页的icon、系统名称

    一 修改icon 1 修改初始化的 icon 只需要把 public favicon ico 改成我们所需要的图片即可 2 动态改变icon document querySelector link rel icon setAttribute
  • python中如何统计文本中的单词个数_python统计文本文件内单词数量的方法

    本文实例讲述了python统计文本文件内单词数量的方法 分享给大家供大家参考 具体实现方法如下 count lines sentences and words of a text file set all the counters to z
  • 大数据课程I1——Kafka的概述

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 了解Kafka的概念 掌握Kafka的配置与启动 一 简介 1 基本概念 Apache kafka 是一个分布式数据流平台 可以从如下几个层面来理解 1 我们

随机推荐

  • 安装office2010失败,提示因为安装了office2010早期试用版本或在安装过程中出错

    昨天下午 一个同学说他要考全国计算机二级考试 需要安装office2010进行做操作题目 但是怎么弄也不能安装上 就连上课老师也安装不了 还告诉他需要换一个系统才能够进行安装 后来她找到了我 请我帮他解决一下 我毫不犹豫的答应了 我拿到电脑
  • [H5] Canvas画布的使用详解:

    Canvas 序言 在渲染复杂的动效 把数据可视化图形显示 游戏场景等需求 都会用canvas技术 比dom操作性能更高 特点 H5新增的图形标签 通过提供的JavaScript函数绘制各种图表或利用算法实际非常华丽的动效 在以前是用Fla
  • 解决AttributeError: 'set' object has no attribute 'items'错误

    出现这个问题 原因可能是定义的header有问题 header key value 如果是直接在请求数据中复制 很有可能会忽略键和值的冒号
  • 计算机二级换c语言,09年计算机二级C语言辅导:C技巧(内存分配:更换策略,不要为难内存)...

    09年计算机二级C语言辅导 C技巧 内存分配 更换策略 不要为难内存 分类 计算机等级 更新时间 2008 11 21 来源 教育联展网 在32位机上 64位也是一样的 但是空间大很多 一个进程可以分配到4GB的虚拟内存 当然 其中2G给了
  • 应用 Valgrind 定位 Linux 程序的内存问题

    参考文章 Valgrind学习总结 应用 Valgrind 发现 Linux 程序的内存问题 Valgrind介绍 Valgrind是一套Linux下 开放源代码 GPL V2 的仿真调试工具的集合 Valgrind由内核 core 以及基
  • [Typescript]基础篇之 String 对象

    基础篇之 String 对象 String 对象简介 与 string 区别 String 定义 属性 方法 属性的使用 方法的使用 lastIndexOf localeCompare replace search slice split
  • matlab学习笔记1

    1 常见用法 1 创建匿名函数 返回该函数句柄 输入参数 表达式 fun x 100 x 2 x 1 2 2 1 x 1 2 定义了一个函数 2 给函数名取别名 函数名 还有其他用法 可参考 https blog csdn net kaev
  • Altium Designer 20中创建网络类、隐藏网络连线

    我们平时在PCB布局的时候不需要电源和地的连线 我们只需要信号的流向 所以我们需要添加一个电源类 来隐藏电源和地的连线 那么 我们如何创建一个类呢 Step 01 使用快捷键DC 调出对象类浏览器 Step 02 Net Classes右击
  • 3W字长文总结PyTorch中常用的函数

    quad quad PyTorch基本函数更新 quad q
  • 程序开发性能调优之如何降低CPU使用率。

    单核的CUP就100 双核的就60 这谁受的了 咋调都不行 我把所有的效果都关了 还不行 连声音都关了 就剩个窗口模式了 他照样100 咋整啊 改用静态的方式的确是能够大大降低数据库的存取频率 进而降低CPU的使用率 依你所表述的情况来看
  • 谈谈softmax中常出现的温度系数 T (τ)

    2022 4 1 今天再回首来看这篇文章 发现自己写的非常局限 并且基本是在拾人牙慧 缺乏自己的思考与提炼 在阅读了更多文章和做实验进行一些思考之后 重写了这篇博客 主要从对比学习 知识蒸馏 分类训练来谈谈自己对于温度系数的理解 前因 许多
  • [前端]ztree树形菜单在dialog中应用时遇到的坑

    前言 好久没更新了 最近工作时遇到这样一个坑 可苦恼死我了 如果你们遇到同样的问题 可参考一下 同一个组件 也就是dialog中含有ztree 多个地方同时调用 第一次在一个页面打开 ztree可以正常渲染出数据 在第二个页面打开后 ztr
  • (2)STM32+ESP8266+手机网络助手实现AP模式通信

    文章目录 1 实验目的及资源 1 1 目的 1 2 资源 2 串口调试wifi模块 2 1 接线 2 2 AT指令测试 2 3 与手机app通信 3 STM32通过wifi与手机app通信 3 1 使用资源 3 2 串口3初始化 3 3 e
  • git pull origin master 时, 遇到 fatal: refusing to merge unrelated histories 230626

    git pull origin master 时 遇到 fatal refusing to merge unrelated histories 230626 解决办法 加 allow unrelated histories allow un
  • 设计模式(1)-工厂模式

    工厂模式可以将其分为三种 1 简单工厂模式 2 工厂方法模式 3 抽象工厂模式 下面我们一个一个来说 一 简单工厂模式 简单工厂模式 或称静态工厂方法模式 是类的创建模式 简单工厂模式是由一个 工厂对象根据收到的消息决定要创建哪一个类的对象
  • 利用GitHub Actions实现将GitHub代码同步到Gitee

    利用 Github Action 实现将 Github 上面的代码同步到 Gitee 中 同步的原理是利用 SSH 公私钥配对的方式拉取 Github 仓库的代码并推送到 Gitee 仓库中 所以我们需要以下几个步骤 生成 SSH 公私钥
  • 数组实现队列(详细)

    我们都知道 队列是一种先进先出的数据结构 每当有人问你队列是什么 你的回答就是 一种先进先出的数据结构 当然这样的回答也是完全没有错的 它就是一种先进先出的数据结构 为什么我们不能描述的多一点呢 更详细一点 下面我们就来详细的描述一下队列
  • 纠错输出编码(Error-Correcting Output Codes: ECOC)

    最近在利用Error Correcting Output Codes做论文 发现网上没有一种讲的比较清楚的 那我今天就花点时间大致上讲一下这种方法 最初提出ECOC方法的是如下的文章 Solving Multiclass Learning
  • 简述sql注入中万能密码的原理

    进行SQL注入的原理就是将特殊输入作为参数传入web程序 从而欺骗服务器执行信息查询功能 而万能密码则是利用sql库中运算符的优先级使得所传入数据库查询语句恒为true的SQL语句 1 用户登录时 后台执行的数据库查询操作 SQL语句 是
  • GIT 常用命令整理

    常用git命令 欢迎大家参考 1 git介绍 git与svn一样都是基于仓库来管理代码的 不过git的仓库在客户端和服务端都是存在的 我们通常都是在本地进行代码commit 然后再提交到远端服务器仓库的 而svn的话 差不多相当于大家一群人