Windows Git Bash 配置
Windows Git Bash 配置
本文参考的文章:
- 在 Windows 的 Git Bash 中使用包管理器 - iris (ginshio.org)
- Git bash 安装 pacman & Windows 解压 zst 文件 | 伪斜杠青年 (lckiss.com)
一、Git的安装
Git 的安装应该是都会的,但还是应该说以下,在 Windows 上安装 git 时,实际上是有很多细节需要注意的。
-
选择 git 使用的默认的编辑器
实际上,git 已经在这里说的很明白了,默认 vim 是一个历史原因,推建我们使用更现代的 GUI 编辑器。实际上,你可以使用
core.editor
来修改你想使用的编辑器。当然,如果你不设置这个值,git 会用环境变量中的EDITOR
作为默认编辑器使用,而 Unix 世界中,EDITOR
往往是Vi
或Vim
。最后说一下笔者的习惯,本人比较习惯用
Vim
,因为其插件较多,相对灵活。除了
Vim
外,还有Emacs
、终端编辑器GNU Nano
,图形编辑器Kate
等等,当然,使用你在Windows系统里安装的编辑器也可以,比如VSCode
、Notepad--
等等,因人而异。 -
初始化新仓库时的默认分值名称
我一般选择默认,你可以使用
init.defaultbranch
来更改默认的分支名称。 -
环境变量的作用域
笔者比较习惯第二个选项(Recomended),这样就可以在
cmd
或者powershell
中直接使用git
命令了,而且有些软件由于会引用git
命令,可能需要git
支持,比如野火大学堂
,这样就很方便了,第三个选项要慎重!可能会污染系统本身的环境变量,导致很多自带cmd
或者powershell
的命令被替换为这个Unix环境中的命令。如果你仅仅需要在Git Bash中使用,选第一个即可。
-
换行符转换
如果做跨平台项目,推荐默认第一项。
这也是经常出问题的地方。
也可以设置为 git 不管换行符 (
checkout as-is, commit as-is
),由自己根据项目要求手动关理换行符。可以用core.autocrlf=false
来指定这种方式。其中,as-is
的意思是原本是什么样就是什么样,Git 不会转换换行符。以下这两种方式是最容易出问题的,当原本的换行符被替换时,整个文件将发生冲突。
- Checkout Windows-style, commit Unix-style: 拉取时转换为 Windows 换行符,和用户本地一致,提交时自动转换为 Unix 风格换行符。可以用
core.autocrlf=true
来指定这种方式。 - Checkout as-is, commit Unix-style: 拉取时包持不变,提交时全部转换为 Unix 风格换行符。可以用
core.autocrlf=input
来指定这种方式。
- Checkout Windows-style, commit Unix-style: 拉取时转换为 Windows 换行符,和用户本地一致,提交时自动转换为 Unix 风格换行符。可以用
-
用哪种终端模拟器配合 Git-Bash 使用
推荐使用 MinTTY。
-
选择 git pull 的默认行为
保持默认即可
pull 的行为主要有 rebase、merge 和 fast-forward,主要由变量
pull.rebase
和pull.ff
控制。-
rebase
的行为可以理解为每次都将自己的提交放在 remote 提交之后; -
merge
的行为是将生成一个新的节点; -
fast-forward
则会在一个提交树上类似于 rebase,当出现分叉时行为类似于 merge,如果是ff-only
时只会产生 rebase 行为,出现分叉则会导致命令失败。-
pull.ff=false
git pull --merge # merge
-
pull.ff=true
git pull --merge # merge --ff
-
pull.ff=only
git pull --merge # merge --ff-only
-
pull.rebase=true
git pull # rebase git pull --merge # merge
-
pull.rebase=false
git pull # merge git pull --merge # merge
-
-
二、安装包管理器
安装pacman及其依赖
构建 Unix 环境的第一步就是有一个包管理器,我们直接使用 MSYS 的 pacman 包管理器。下载完成后,将其解压到 Git 的根目录下,在本部分内容里,我们用 /
表示 Git 安装的根目录。
发现提供的包是tar. zst
类型,Windows 上的压缩软件不支持直接解压,于是上 GitHub 找到了一个:https://github.com/mcmilk/7-Zip-zstd/releases,可用于解压。(临时解决方案,如有更好的方案请大佬们告知)
这时的 pacman 还是无法使用的阶段,毕竟 Git 携带的是最小化的环境,并没有 pacman 需要的依赖。不过 msys package 中已经为我们详细列出了其所需的依赖。如果你想知道 Git 安装了哪些软件,可以查看 /etc/package-versions.txt
。
cat /etc/package-versions.txt
所需依赖如下:
- bash >= 4.2.045
- bzip2
- curl
- gettext
- gnupg
- msys2-keyring
- pacman-mirrors
- which
- xz
- zstd
然而,我们并不需要安装列出的所有依赖,因为 Git 已经帮我们安装了一部分了。我们只需要安装 pacman-mirrors 和 msys2-keyring 。
安装的三个东西,一个是 pacman 主包,一个是源,一个是源秘钥。
PS:这就是个先鸡后蛋问题 = =。
更新 pacman
这时候去执行 pacman 不出意外是会不行的,什么签名未信任,无效的数据库,无法锁定数据库之类的,问题不大。
依次执行以下命令:
-
刷新秘钥:
pacman-key --init pacman-key --refresh-keys pacman-key --populat pacman-key --populate msys2 # 和上面一条执行任一个即可
-
清除缓存
pacman -Sc
-
更新系统
pacman -Syu pacman -Syuu # 和上面一条执行任一个即可
-
测试,列出所有软件包
pacman -Sl
-
避免安装不完整,我们接下来用
pacman
安装和更新pacman
,这样就会自动补齐所需软件包和依赖pacman -S pacman pacman -S pacman-mirrors pacman -S msys2-keyring
相关文章:

Windows Git Bash 配置
Windows Git Bash 配置 本文参考的文章: 在 Windows 的 Git Bash 中使用包管理器 - iris (ginshio.org)Git bash 安装 pacman & Windows 解压 zst 文件 | 伪斜杠青年 (lckiss.com) 一、Git的安装 Git 的安装应该是都会的,但还是应该说以下&#…...
java代码整合kettle9.3实现读取表中的数据,生成excel文件
java代码整合kettle9.3实现读取表中的数据,生成excel文件 1.简介 本次使用java代码整合kettle9.3版本,数据库使用mysql。 2.jar包导入 项目需要依赖部分kettle中的jar包,请将这部分jar包自行导入maven仓库。 <dependency><groupId…...

分享微信点餐小程序搭建步骤_微信点餐功能怎么做
线下餐饮实体店都开始摸索发展网上订餐服务。最多人选择的是入驻外卖平台,但抽成高,推广还要另买流量等问题,也让不少商家入不敷出。在这种情况下,建立自己的微信订餐小程序,做自己的私域流量是另一种捷径。那么&#…...

4、数组、切片、map、channel
目录一、数组二、切片三、map四、channel五、引用类型一、数组 数组: 数组是块连续的内存空间,在声明的时候必须指定长度,且长度不能改变所以数组在声明的时候就可以把内存空间分配好,并赋上默认值,即完成了初始化数组…...
270 uuid
270 uuid 用途 For the creation of RFC4122 UUIDs 可靠性 10000 星星 适应于浏览器或者服务器 官网链接 https://www.npmjs.com/package/uuid https://github.com/uuidjs/uuid 基本使用 import { v4 as uuidv4 } from uuid; uuidv4(); // ⇨ 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3d…...

2023最新简历模板免费下载
下面分享5个简历模板网站,免费下载,建议收藏! 2023用最漂亮的简历模板,让面试官眼前一亮。 1、菜鸟图库 个人简历模板|WORD文档模板免费下载 - 菜鸟图库 菜鸟图库除了有超多设计类素材之外,还有很多办公类素材&#…...

【CSS】元素居中总结-水平居中、垂直居中、水平垂直居中
【CSS】元素居中一、 水平居中1.行内元素水平居中(1)text-align2.块级元素水平居中2.1 margin(1)margin2.2布局(1)flex justify-content(推荐)(2) flexmargin…...
spring实现AOP
文章目录前言一、AOP的底层实现原理二、AOP的两种开发模式1.使用xml配置文件1.1 添加AOP依赖1.2 创建UserService1.3创建UserServiceImpl1.4创建通知类1.5 创建applicationContext.xml(添加aop约束)1.6 测试2.使用注解开发2.1 创建bean.xml文件配置注解方…...
neovim搭建cpp环境
文章目录Windowns下NeoVim搭建cpp环境NeoVim安装插件vim-plugindentLinevim-airlinectagstagbarcoc.vimWindowns下NeoVim搭建cpp环境 在开发过程中习惯在DIE环境中使用vim作为编辑器,在单独的编辑器也常使用gvim图形化编辑器。最近看到NeoVim的特性及兼容性方面不输…...
SpringBoot AES加密 PKCS7Padding 模式
AES 简介:DES 全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS) AES 密码学中的高级加密标准(Advan…...

按键输入驱动
目录 一、硬件原理 二、添加设备树 1、创建pinctrl 2、创建节点 3、检查 编译复制 三、修改工程模板编辑 四、驱动编写 1、添加keyio函数 2、添加调用 3、驱动出口函数添加释放 4、添加原子操作 5、添加两个宏定义 6、初始化原始变量 7、打开操作 8、读操作 总体代…...
2023年第七周总周结 | 开学倒数第三周
为什么要做周总结? 1.避免跳相似的坑 2.客观了解上周学习进度并反思,制定可完成的下周规划 一、上周问题解决情况 晚上熬夜导致第二天学习状态不好 这周熬夜一天,晚上帮亲戚修手机到22:30,可能是晚上自己的事什么都没做ÿ…...

Springboot扫描注解类
Springboot扫描注解类的入口在AbstractApplicationContext的refresh中,对启动步骤不太了解的,可参考https://blog.csdn.net/leadseczgw01/article/details/128930925BeanDefinitionRegistryPostProcessor接口有多个实现类,扫描Controller、Se…...

Apache日志分析器
您的Apache HTTP服务器生成的日志数据是信息的宝库。使用这些信息,您可以判断您服务器的使用情况、找出漏洞所在,并设法改进服务器结构和整体性能。审核您的Apache日志可在以下情况派上用场,其中包括:识别和纠正频繁出现的错误以增…...

啪,还敢抛出异常
🙉 作者简介: 全栈领域新星创作者 ;天天被业务折腾得死去活来的同时依然保有对各项技术热忱的追求,把分享变成一种习惯,再小的帆也能远航。 🏡 个人主页:xiezhr的个人主页 前言 去年又重新刷了…...

Apache JMeter 5.5 下载安装以及设置中文教程
Apache JMeter 5.5 下载安装以及设置中文教程JMeter下载Apache JMeter 5.5配置环境变量查看配置JDK配置JMeter环境变量运行JMeter配置中文版一次性永久设置正文JMeter 下载Apache JMeter 5.5 官方网站:Apache JMeter 官网 版本介绍: 版本中一个是Bina…...

string类模拟实现
了解过string常用接口后,接下来的任务就是模拟实现string类。 目录 VS下的string结构 默认成员函数和简单接口 string结构 c_str()、size()、capacity()、clear()、swap() 构造函数 拷贝构造函数 赋值重载 析构函数 访问及遍历 容量操作 reserve resize …...

cadence SPB17.4 S032 - allegro - 保存/载入光绘层定义
文章目录cadence SPB17.4 S032 - allegro - 保存/载入光绘层定义概述保存光绘层在新板子中载入已经保存的相同类型老板子定义好的光绘层定义文件碎碎念ENDcadence SPB17.4 S032 - allegro - 保存/载入光绘层定义 概述 以前布线完成, 准备出板厂文件时, 总是要手工重新建立光绘…...

微服务实战--高级篇:分布式缓存 Redis
分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 1.Redis持久化 Redis有两种持久化方案: RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件)…...
【C语言】可变参数列表
本篇博客让我们来认识一下C语言学习过程中往往被忽略的可变参数列表 所谓可变参数,就是一个不限定参数数量的函数,我们可以往里面传入任意个数的参数,以达成某些目的。 关联:C11可变模板参数;本文首发于 慕雪的寒舍 …...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...

算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...