-
技术干货SSH 跳板机配置指南cid:link_6docker.io/library 详解cid:link_0vim 编辑器翻页指南cid:link_1OpenSSL生成自签名证书填写DN信息详解cid:link_2git clone 跳过大文件下载cid:link_7git rm --cached 详解cid:link_8git恢复指定提交历史cid:link_9开启SSH服务遇到SELinux未禁用的解决方案cid:link_10Docker中sha256 和IMAGE ID解析cid:link_11Linux中init深度解析cid:link_3taskset命令详解cid:link_12修改 Ubuntu 22.04 的登录提示语 (motd - Message of the Day)cid:link_13临时设置pip源cid:link_14硬盘容量大小单位cid:link_15certificate verify failed: self-signed certificate (_ssl.c:1007)解决方案cid:link_4docker attach和docker exec区别cid:link_5问题答疑问: OBS某一个桶的域名对应的IP和OBS集群的IP是一个吗?答:建议更换DNS服务,重新ping一下ip。问: 华为云对象存储OBS服务的存储类别有哪些?答:支持的存储类别有标准存储、低频访问存储、归档存储、深度归档存储(受限公测)详情参考:cid:link_16
-
1. docker attach 的作用docker attach 是用于将当前终端连接到一个正在运行的容器的标准输入、输出和错误流(stdin/stdout/stderr)。具体来说:当你执行 docker attach <container_id> 时,终端会直接连接到容器的控制台。如果容器启动时没有指定交互模式(例如通过 -it 参数),docker attach 可能会导致一些意外的行为,比如无法正确处理输入或输出。缺点:阻塞性:docker attach 会阻塞当前终端,直到容器停止运行或手动断开连接。这对于后台运行的容器来说可能不太合适,因为用户可能希望在不阻塞的情况下检查容器的状态或执行命令。交互性问题:如果容器没有以交互模式启动(即没有使用 -it 参数),docker attach 可能会导致终端无法正确显示输出或接收输入,甚至可能导致终端状态混乱。不适合后台操作:由于 docker attach 是直接连接到容器的控制台,它更适合于调试或实时监控容器的运行状态,而不适合在后台运行的容器中执行特定任务。2. docker exec 的作用docker exec 是用于在已经运行的容器中执行命令的工具。它可以灵活地指定参数,支持多种操作模式(如交互模式、非交互模式等)。特点:灵活性:docker exec 支持多种参数,例如:-it:打开交互模式,允许用户与容器进行交互。-d:在后台运行命令。-u:指定用户执行命令。-w:指定工作目录。非阻塞性:docker exec 不会阻塞当前终端,除非显式指定了交互模式(-it)。这使得它非常适合在后台运行的容器中执行命令。适用性:无论容器是否以交互模式启动,docker exec 都可以正常工作,因为它不会依赖容器的初始启动配置。示例:# 在容器中执行一条命令(非交互模式) docker exec <container_id> ls # 在容器中打开交互式 shell(交互模式) docker exec -it <container_id> bash 3. 为什么推荐使用 docker exec 而不是 docker attach?(1) 适用于后台运行的容器后台运行的容器通常不需要用户实时监控其控制台输出。docker attach 会直接连接到容器的控制台,可能会导致不必要的阻塞或干扰。相比之下,docker exec 可以在不干扰容器正常运行的情况下,执行特定的任务或检查容器的状态。(2) 避免终端状态混乱如果容器没有以交互模式启动(即没有使用 -it 参数),docker attach 可能会导致终端无法正确处理输入或输出,甚至可能导致终端状态混乱。而 docker exec 不依赖容器的初始启动配置,可以灵活地选择是否启用交互模式,从而避免这些问题。(3) 更好的可控性和灵活性docker exec 提供了丰富的参数选项,可以根据需求选择是否以交互模式运行、是否在后台运行、是否指定用户等。这种灵活性使得 docker exec 更适合在各种场景下使用,尤其是在需要对后台运行的容器进行管理或调试时。(4) 更符合现代容器管理实践在实际生产环境中,容器通常是作为服务运行的,而不是为了提供交互式控制台。因此,docker exec 更符合现代容器管理的最佳实践,因为它专注于执行特定任务,而不是直接连接到容器的控制台。4. 总结docker attach:适合用于实时监控容器的控制台输出或调试容器的运行状态,但不适合后台运行的容器,因为它可能会导致阻塞或终端状态混乱。docker exec:适合在后台运行的容器中执行特定任务或检查容器状态,因为它提供了更高的灵活性和可控性,且不会干扰容器的正常运行。因此,强烈建议在后台运行的容器中使用 docker exec,而不是 docker attach,以确保操作的安全性和可靠性。
-
httpx.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1007) 这个错误 httpx.ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] 通常发生在 Python 的 HTTP 客户端(如 httpx 或 requests)尝试与使用 自签名证书(self-signed certificate) 的 HTTPS 服务器通信时。由于自签名证书未被公共证书颁发机构(CA)认证,Python 的 SSL 模块默认会拒绝连接,导致此错误。方法 1: 禁用 SSL 验证(不推荐,仅用于测试/开发)如果目标服务器是本地开发环境,并且安全性不重要,可以临时禁用 SSL 验证:import httpx # 禁用 SSL 验证 client = httpx.Client(verify=False) response = client.get("https://your-server.com") print(response.text) 注意:这会暴露请求,有中间人攻击(MITM)风险,切勿在生产环境使用。方法 2: 添加自签名证书到信任列表如果有服务器的自签名证书(如 .pem 或 .crt 文件),可以将其路径传递给 verify 参数:import httpx # 指定自签名证书路径 client = httpx.Client(verify="/path/to/your/certificate.pem") response = client.get("https://your-server.com") 方法 3: 设置环境变量(绕过验证)通过环境变量全局禁用 SSL 验证(仅用于测试):export PYTHONHTTPSVERIFY=0 # Linux/macOS set PYTHONHTTPSVERIFY=0 # Windows 然后重新运行你的脚本。同样,不推荐用于生产环境。方法 4: 更新系统的 CA 证书如果是系统证书问题(如证书过期或缺失),更新证书包:Ubuntu/Debian:sudo apt-get install --reinstall ca-certificatesCentOS/RHEL:sudo update-ca-trust方法 5: 使用 certifi 提供 CA 证书Python 的 certifi 包提供了最新的 CA 证书。确保已安装并显式指定:import httpx import certifi client = httpx.Client(verify=certifi.where()) response = client.get("https://your-server.com") 安装 certifi:pip install certifi根本原因目标服务器使用了自签名证书或无效证书。你的系统或 Python 环境缺少信任的根证书(如 Docker 镜像未配置证书)。服务器证书可能已过期或被吊销。最佳实践生产环境:始终使用受信任的 CA 颁发的证书(如 Let’s Encrypt)。开发环境:如果是自签名证书,将其添加到客户端信任列表(方法 2)。临时调试:仅方法 1 或 3(但需知悉风险)。如果问题仍未解决,请检查目标服务器的 SSL 证书是否有效:openssl s_client -connect your-server.com:443 -showcerts
-
硬盘容量大小的单位遵循计算机存储的标准二进制和十进制单位体系1. 二进制单位(传统习惯,部分场景使用)基础单位:字节(Byte,简写 B),1 字节 = 8 位(bit)。扩展单位:1 KiB(Kibibyte) = 1024 Bytes1 MiB(Mebibyte) = 1024 KiB = 1,048,576 Bytes1 GiB(Gibibyte) = 1024 MiB ≈ 1.07 Billion Bytes1 TiB(Tebibyte) = 1024 GiB ≈ 1.10 Trillion Bytes后续单位:PiB、EiB、ZiB、YiB(每级×1024)。注意:Windows 系统显示容量时仍用 KB/MB/GB,但实际计算基于 1024,这与标准二进制单位(KiB/MiB)不同。2. 十进制单位(硬盘厂商标准,国际单位制)基础单位:字节(Byte)。扩展单位:1 KB(Kilobyte) = 1000 Bytes1 MB(Megabyte) = 1000 KB = 1,000,000 Bytes1 GB(Gigabyte) = 1000 MB = 1 Billion Bytes1 TB(Terabyte) = 1000 GB = 1 Trillion Bytes后续单位:PB、EB、ZB、YB(每级×1000)。3. 实际差异与争议厂商 vs 系统:硬盘标注的容量(如 1TB = 1000^4 B)在操作系统中可能显示为约 931 GiB(因系统用 1024^3 GiB计算)。换算公式:厂商标称容量 (十进制) ÷ (1024^n) = 系统显示容量 (二进制) 例如:1 TB 硬盘 = 1,000,000,000,000 Bytes ÷ (1024^3) ≈ 931.32 GiB4. 常见应用场景硬盘/SSD 厂商:使用十进制单位(GB/TB)。操作系统(如Windows):用二进制计算但显示为十进制单位(如“GB”),导致容量“缩水”。Linux/macOS:默认使用二进制单位(KiB/GiB)或明确标注。总结建议购买硬盘时:注意厂商的十进制单位(1TB = 1000 GB)。系统存储管理:需理解实际可用空间会因二进制计算和文件系统占用而减少。
-
要临时为 pip 设置清华源(清华大学开源软件镜像站),可以通过以下命令在安装包时直接指定镜像源,而无需永久修改配置:方法一:安装时临时指定镜像源pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 包名示例(安装 numpy):pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple numpy方法二:通过环境变量临时设置(推荐)export PIP_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple pip install 包名优点:在当前终端会话中,所有后续的 pip 命令都会自动使用清华源,无需每次重复输入 -i 参数。注意事项验证源地址:确保使用正确的清华源地址:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple信任选项(可选):若遇到 SSL 信任问题,可添加 --trusted-host:pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --trusted-host mirrors.tuna.tsinghua.edu.cn 包名恢复默认源:关闭终端或取消环境变量即可恢复默认源:unset PIP_INDEX_URL永久配置清华源(如需)若需长期使用清华源,可执行以下命令生成配置文件:pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple这会修改 pip 的全局配置,所有后续安装均自动使用清华源。
-
要修改 Ubuntu 22.04 的登录提示语 (motd - Message of the Day),可以通过编辑以下几个文件实现:方法 1:修改 /etc/motd (静态内容)sudo nano /etc/motd删除默认内容,替换为你想要的欢迎信息,比如:欢迎使用华为云服务 定制化 Ubuntu 系统方法 2:禁用动态更新(推荐)动态提示来自 /etc/update-motd.d/ 目录下的脚本:# 移除可执行权限禁用动态内容 sudo chmod -x /etc/update-motd.d/*方法 3:完全自定义清空现有配置:sudo rm -f /etc/motd sudo mkdir -p /etc/update-motd.d/创建自定义脚本:sudo nano /etc/update-motd.d/00-huawei内容示例:#!/bin/sh echo "欢迎使用华为云服务" echo "系统版本: $(lsb_release -sd)" echo "当前时间: $(date)" 赋予执行权限:sudo chmod +x /etc/update-motd.d/00-huawei在 Ubuntu 22.04 中,登录提示语(MOTD)可以根据需要进行自定义设置。系统默认通过 /etc/motd 文件和 /etc/update-motd.d/ 目录下的脚本生成提示内容。如果只需简单修改静态信息,可直接编辑 /etc/motd 文件,替换为所需的欢迎语或说明。若希望禁用系统自动生成的动态内容,可通过 sudo chmod -x /etc/update-motd.d/* 命令移除脚本执行权限,从而保留手动设置的内容。对于更灵活的定制需求,建议清空 /etc/motd,并在 /etc/update-motd.d/ 目录中创建自定义脚本文件(如 00-huawei),添加 Shell 命令输出系统版本、时间等信息,并赋予执行权限。这样可以在每次登录时动态展示个性化提示内容。
-
taskset 是 Linux 系统中用于设置或检索进程的 CPU 亲和性(CPU affinity)的命令。通过 taskset可以指定某个进程运行在特定的 CPU 核心上,或者启动一个新进程并绑定到特定的 CPU。基本语法taskset [选项] [掩码 | 列表] -p [PID] 或者:taskset [选项] [掩码 | 列表] 命令 [参数...] 参数说明掩码(mask):使用十六进制表示 CPU 掩码。例如:0x00000001 表示 CPU0,0x00000003 表示 CPU0 和 CPU1。列表(list):使用逗号分隔的 CPU 编号列表,如 0,1,3。需要加 --cpu-list 选项来使用这种格式。-p 或 --pid:操作已存在的进程。--cpu-list:使用 CPU 编号列表而不是掩码。示例用法1. 启动一个新进程并绑定到特定 CPU使用掩码方式(绑定到 CPU0):taskset 0x00000001 your_command_here使用 CPU 列表方式(绑定到 CPU0 和 CPU1):taskset --cpu-list 0,1 your_command_here例如运行一个 sleep 命令:taskset --cpu-list 0,1 sleep 60 2. 修改一个正在运行的进程的 CPU 亲和性获取进程 PID:ps aux | grep your_process_name修改该进程运行在 CPU0 上:taskset -p 0x00000001 <PID> 修改为运行在 CPU0 和 CPU1 上:taskset -p --cpu-list 0,1 <PID> 3. 查看当前进程的 CPU 亲和性taskset -p <PID> 输出类似:pid 1234's current affinity mask: f其中 f 是十六进制,表示允许运行在 CPU0~3(即 0b1111)。注意事项不同 CPU 编号取决于系统架构,从 0 开始编号。如果你绑定了错误的 CPU(比如超出系统核心数量),会提示错误。某些系统需要 root 权限才能更改进程的 CPU 亲和性。实际演示示例 1:启动一个 top 并限制只在 CPU1 上运行taskset --cpu-list 1 top 示例 2:将现有进程 PID=1234 绑定到 CPU2taskset -p 0x00000004 1234
-
init 是 Linux 系统中非常核心的进程,它是第一个启动的用户空间进程(即 PID 为 1 的进程)。init 负责启动系统的其他进程,管理系统的初始化过程,并在系统关机或重启时接管资源回收和清理工作。一、init 的基本用途系统初始化器init 是所有其他进程的祖先,由 Linux 内核在启动过程中自动启动。守护进程管理器它运行用户定义的初始化脚本(例如 /etc/inittab 或 systemd 提供的服务管理文件)。运行级别(Runlevel)管理在使用 SysV init(即传统的 /sbin/init)时,init 通过 runlevel 决定系统进入哪个工作状态。二、不同 init 系统Linux 系统中可能会使用以下几种 init 系统之一:类型描述SysV init传统的 init,使用 /etc/inittab 和 inittab 文件systemd当前主流的 init 系统,较新大多数 Linux 发行版默认使用UpstartUbuntu 曾经使用,现已被 systemd 取代OpenRCGentoo 等发行版使用的 init 系统三、SysV init 常用命令init [运行级别] 运行级别(Runlevels)运行级别描述0关机(halt)1单用户模式(oned-user mode)2多用户无网络3多用户带网络(文本模式)4未定义或自定义使用5图形界面(GUI)6重启(reboot)示例sudo init 3 # 进入多用户模式(无图形) sudo init 5 # 进入图形界面模式 sudo init 0 # 关机 sudo init 6 # 重启 四、systemd 系统 vs. init如果操作系统使用 systemd(现代大多数 Linux 系统),init 命令实际是 systemd 的符号链接:ls -l /sbin/init # 可能输出: /sbin/init -> /lib/systemd/systemd 在这种情况下,init 命令只能处理运行级别的变更或系统关闭,无法详细管理 service。这些命令实际上会通过 systemd 转换成对应的 target 单元(unit),比如:运行级别对应的 systemd targetrunlevel0.targetpoweroff.targetrunlevel1.targetrescue.targetrunlevel2.targetmulti-user.targetrunlevel3.targetmulti-user.targetrunlevel4.targetmulti-user.targetrunlevel5.targetgraphical.targetrunlevel6.targetreboot.target五、注意事项普通用户不能随意运行 init 命令,因为它需要超级用户(root)权限。切勿在不确定 runlevel 含义时随意更改,否则可能导致系统无法使用。systemd 系统请使用 systemctl 命令管理服务和运行级别。六、相关命令命令描述who -r查看当前运行级别systemctlsystemd 系统使用 systemctl 命令代替 inittelinitinit 的别名,用于切换运行级别shutdown更安全地关闭或重启系统七、示例说明$ who -r run-level 5 2024-11-12 12:00 last=(3) Q这表示当前系统运行在 runlevel 5(图形界面)。总结项目内容作用系统初始化和 shutdownPID始终是 1常用命令init 0(关机)、init 6(重启)替代方案(systemd)用 systemctl 代替 init
-
正确理解两者的关系:1. IMAGE ID 并不是直接从 sha256 摘要中截取的sha256:xxxxxx...(digest)是镜像 manifest 的哈希值,而 IMAGE ID 实际上是这个镜像配置文件(image config)的哈希值。即:docker pull 时显示的 Digest 是镜像 manifest 的 SHA256 哈希。docker images 中的 IMAGE ID 是该镜像的 config 文件的 SHA256 哈希的缩写。镜像结构简要说明Docker 镜像是由多个部分组成的,其中两个关键的部分是:组成部分含义Manifest描述镜像包含哪些层(layers)、平台信息等。pull 时显示的 digest 就是它的 hash。Config (Image Config)包含构建镜像时的元数据(如 CMD、ENV、历史记录等),它的 SHA256 哈希就是 IMAGE ID 的来源。举例说明假设在拉取一个镜像时看到如下输出:Digest: sha256:3093096ee188f8ff4531949b8ff15aff4747ec1c58858c091c8cb4579c39cc4e这个 sha256 是 manifest 的摘要。而在本地运行 docker images 时看到:REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest f63181f19b2f 2 weeks ago 142MB这个 f63181f19b2f 是镜像的 config 文件的 SHA256 哈希值的前 12 位。如何验证?可以使用以下命令查看镜像的详细信息:docker inspect <image-name> 在输出中会看到类似的内容:"Id": "sha256:f63181f19b2f756a9d5f9ad59364a5bf2edeb265066db561ef7653f2576ac3f2", "RepoDigests": [ "nginx@sha256:3093096ee188f8ff4531949b8ff15aff4747ec1c58858c091c8cb4579c39cc4e" ] "Id" 对应的是 IMAGE ID"RepoDigests" 中的值对应的是 manifest 的 Digest总结:正确的逻辑关系名称来源内容关系Digest (sha256:...)Registry 返回的 manifest 的 SHA256 哈希描述整个镜像的结构和内容不同于 IMAGE IDIMAGE ID镜像的 config 文件的 SHA256 哈希构建镜像时生成的元信息是 config 的哈希缩写错误说法:IMAGE ID 是 Digest 的前几位正确说法:IMAGE ID 是镜像 config 的哈希,而 Digest 是 manifest 的哈希,它们都属于同一个镜像的不同部分,但不是简单的截取关系。
-
要临时禁用 SELinux,可以执行以下步骤:查看 SELinux 的状态,可以使用以下命令: sestatus如果 SELinux 处于 “enabled” 状态,会看到类似这样的输出: SELinux status: enabled临时禁用 SELinux,可以使用以下命令: sudo setenforce 0 这将把 SELinux 设置为 “Permissive” 模式,允许操作但会记录违规行为。确认 SELinux 的状态已更改为 “Permissive”,可以再次运行 sestatus 命令,您将看到类似这样的输出: SELinux status: permissive注意:这只会在临时情况下禁用 SELinux,重启服务器后将恢复为默认状态。要永久性地禁用 SELinux,需要编辑 /etc/selinux/config 文件,并将 SELINUX 设置更改为 “disabled”。使用编辑器(如 vi 或 nano)打开配置文件:sudo vi /etc/selinux/config找到 SELINUX 行并将其更改为:SELINUX=disabled保存并关闭文件。然后,重新启动服务器,SELinux 将在启动时被禁用。注意:禁用 SELinux 可能会影响系统的安全性。如果选择禁用 SELinux,请确保采取其他安全措施以保护系统。关闭防火墙可能会导致安全风险,如果仍然希望关闭防火墙,请根据操作系统使用以下命令:对于 CentOS 7 及更早版本:sudo systemctl stop firewalld sudo systemctl disable firewalld对于 CentOS 8 及更新版本,以及 Fedora:sudo systemctl stop firewalld sudo systemctl disable firewalld重新启动ssh服务sudo systemctl restart sshd
-
要恢复 Git 提交历史,将某个提交之后的所有提交「删除」并推送到远程仓库,按照以下步骤操作。前提条件你已经确定要彻底删除 提交 w235f2345234... 之后的所有提交。你正在操作的分支(如 main 或 master)没有其他人正在工作。你有权限 强制推送(force push) 到远程仓库。所有本地的修改要么已经被提交,要么已经被保存(避免数据丢失)。操作步骤1. 查看当前分支git branch确保你在正确的分支上(例如 main 或 feature-xxx)。2. 硬重置到目标提交git reset --hard w235f23452346d1d3bad05403ebce0a54c4ad这会将 本地分支的 HEAD、索引和工作目录 全部设置为 w235 提交的状态。--hard 选项会丢弃所有未提交的更改,包括工作目录和暂存区的修改,请确保你不需要保留这些数据。3. 强制推送到远程仓库git push -f origin main把 main 替换为你实际使用的分支名。注意事项强制推送(-f)风险强制推送会覆盖远程分支的历史。这意味着:其他协作开发者的本地历史与远程不一致。如果他们没有进行正确的同步操作,可能会丢失提交、冲突或数据紊乱。在多人协作的项目中要谨慎操作,并提前沟通。备份建议在执行任何历史重置前,建议创建一个备份分支:git branch before-reset这可以帮助你在误操作后恢复。完成后的验证推送后,验证:git log --oneline确认当前提交历史只包含 w235 之前的提交。FAQQ:如何确认提交 w235 是否在当前分支的分支链中?git log --oneline main查看是否存在该提交。Q:如何查看提交之后的所有提交?git log w235..HEAD --oneline
-
在 Git 中,git rm --cached 和 git rm(不加 --cached)的主要区别在于 是否保留本地文件 以及 是否从版本控制中移除。以下是详细对比:1. git rm --cached <file>作用:将文件从 Git 的 暂存区(索引) 和 版本库 中移除,但 保留本地工作目录中的文件。结果:文件不再被 Git 跟踪(即从版本控制中移除,.gitignore 类似效果)。文件本身仍保留在本地磁盘(未被删除)。下次提交时,文件的变更会被完全忽略(除非重新 git add)。典型场景:误将文件加入 Git 后想取消跟踪(如临时文件、配置文件等)。配合 .gitignore 使用(先 git rm --cached 后添加忽略规则)。示例:git rm --cached config.env # 移除跟踪,本地保留 config.env git commit -m "Stop tracking config.env" 2. git rm <file>(不加 --cached)作用:将文件从 暂存区、版本库和本地工作目录 中 完全删除(物理删除)。结果:文件从 Git 跟踪中移除。文件被从本地磁盘删除(需谨慎操作)。下次提交时,文件的删除会被记录。典型场景:永久删除不需要的文件(如冗余的旧文件)。示例:git rm obsolete.txt # 删除 obsolete.txt 的跟踪和本地文件 git commit -m "Remove obsolete.txt" 关键对比总结命令是否从 Git 移除跟踪是否删除本地文件适用场景git rm --cached <file>是否取消跟踪但保留本地文件git rm <file>是是彻底删除文件(跟踪+本地)注意事项恢复文件:如果误用 git rm(不加 --cached),可以用 git restore --staged <file> 恢复暂存区,但本地文件需从回收站恢复或重新创建。路径规范:两种命令都支持 -r 参数来递归操作目录(如 git rm -r dir/)。提交生效:两种操作均需 git commit 后才能生效(仅在暂存区时不影响其他协作者)。总结想保留本地文件 → 用 --cached(仅取消跟踪)。想彻底删除文件 → 直接 git rm(跟踪和本地一起删)。操作前建议先备份重要文件!
-
在使用 git clone 时跳过 Git LFS(Large File Storage)下载可以节省时间,特别是在不需要仓库中的大文件时。方法 1:禁用 LFS 克隆(简单推荐)在克隆命令中添加 GIT_LFS_SKIP_SMUDGE 环境变量:GIT_LFS_SKIP_SMUDGE=1 git clone <仓库URL> 作用:跳过 LFS 文件的下载(指针文件会保留,但不会拉取实际的大文件内容)。后续操作:若需单独下载某个 LFS 文件,可使用:git lfs pull --include="路径/到大文件" 方法 2:仅克隆仓库(不含 LFS 元数据)如果连 LFS 指针文件也不想下载(纯代码克隆):git clone --filter=blob:none <仓库URL> 效果:仅克隆提交历史和工作目录结构,不下载任何大文件(包括指针文件)。注意:需要使用较新版本的 Git(≥2.22)。方法 3:克隆后删除 LFS 文件若已经克隆但想清理已下载的 LFS 文件:git lfs uninstall rm -r .git/lfs/ # 删除 LFS 缓存 将移除本地 LFS 存储的文件(但保留指针文件)。方法 4:永久全局禁用 LFS(谨慎使用)git config --global lfs.fetchinclude "" git config --global lfs.fetchexclude "*" 效果:全局配置 Git 忽略所有 LFS 文件下载。注意事项指针文件:跳过 LFS 后,仓库中可能会看到 LFS 指针文件(文本文件,包含哈希值)。恢复下载:之后需要 LFS 文件时,运行 git lfs pull 即可。
-
在使用OpenSSL生成自签名证书的时候,会有如下提示:You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:上述是 OpenSSL 在生成 证书签名请求(CSR) 或 自签名证书 时要求填写的 可分辨名称(DN, Distinguished Name) 信息,用于标识证书持有者的身份。详细说明:DN(可分辨名称)是 X.509 证书中用于唯一标识证书持有者(如网站、服务器、公司等)的信息。包含国家、组织、域名等多个字段。当前提示的含义Country Name (2 letter code) [AU]:要求输入 国家代码(2位字母),如 CN(中国)、US(美国)。[AU] 是默认值(澳大利亚),直接按回车会使用该默认值。如果输入 .,则该字段留空(不推荐)。后续可能出现的其他字段(常见DN字段)在下一步中,OpenSSL 还会依次询问:State or Province Name (full name) [](省/州名,如 Beijing、California)Locality Name (city) [](城市名,如 Shanghai、New York)Organization Name (company) [](组织/公司名,如 Tencent、Google LLC)Organizational Unit Name (department) [](部门名,如 IT Department)Common Name (domain name) [](最重要的字段!通常是域名,如 example.com)Email Address [](可选,管理员邮箱)如何填写?必填字段:Country Name(国家)、Common Name(域名)。可选字段:省、市、部门等可留空(直接回车跳过)。默认值:如果提示中有 [XX](如 [AU]),直接回车会使用该默认值。示例(生成CSR时填写)Country Name (2 letter code) [AU]: CN State or Province Name (full name) []: Beijing Locality Name (city) []: Beijing Organization Name (company) []: Example Inc Organizational Unit Name (department) []: IT Common Name (domain name) []: example.com Email Address []: admin@example.com注意事项Common Name (CN) 必须与证书使用的域名一致(如网站域名或服务器主机名)。如果是自签名证书(测试用),可随意填写,但生产环境需确保准确。
-
在 Vim 中翻页有多种方式:整页翻页向下翻页(下一页)Ctrl + f(f = forward)相当于 Page Down 键。向上翻页(上一页)Ctrl + b(b = backward)相当于 Page Up 键。半页翻页向下翻半页Ctrl + d(d = down)向上翻半页Ctrl + u(u = up)精确滚动向下滚动一行Ctrl + e(e = expose)向上滚动一行Ctrl + y(y = yield)光标保持在屏幕位置翻页时光标会跟随移动。若希望光标保持在屏幕固定位置:z + Enter:光标移动到屏幕顶部。z + .:光标移动到屏幕中间。z + -:光标移动到屏幕底部。其他导航行首/行尾:0(行首) / $(行尾)文件首/尾:gg(文件首) / G(文件尾)小技巧数字 + 翻页命令:例如 5Ctrl + f 会向下翻 5 页。结合搜索:先按 / 搜索关键词,再用 n/N 跳转后翻页。在 Vim 中翻页,常用快捷键如下:按 Ctrl + f 向下翻一页,Ctrl + b 向上翻一页;使用 Ctrl + d 向下半页滚动,Ctrl + u 向上半页滚动。要快速跳转到文件开头可输入 gg,跳转到末尾则按 G。掌握这些组合后,可以高效浏览文件。根据习惯选择合适的方式即可!
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签