Windows Git Bash 配置

news2024/11/15 20:41:25

Windows Git Bash 配置

本文参考的文章:

  • 在 Windows 的 Git Bash 中使用包管理器 - iris (ginshio.org)
  • Git bash 安装 pacman & Windows 解压 zst 文件 | 伪斜杠青年 (lckiss.com)

一、Git的安装

Git 的安装应该是都会的,但还是应该说以下,在 Windows 上安装 git 时,实际上是有很多细节需要注意的。

  1. 选择 git 使用的默认的编辑器

    img

    实际上,git 已经在这里说的很明白了,默认 vim 是一个历史原因,推建我们使用更现代的 GUI 编辑器。实际上,你可以使用 core.editor 来修改你想使用的编辑器。当然,如果你不设置这个值,git 会用环境变量中的 EDITOR 作为默认编辑器使用,而 Unix 世界中,EDITOR 往往是 ViVim

    最后说一下笔者的习惯,本人比较习惯用 Vim,因为其插件较多,相对灵活。

    除了Vim外,还有 Emacs 、终端编辑器 GNU Nano,图形编辑器 Kate等等,当然,使用你在Windows系统里安装的编辑器也可以,比如VSCodeNotepad--等等,因人而异。

  2. 初始化新仓库时的默认分值名称

    img

    我一般选择默认,你可以使用 init.defaultbranch 来更改默认的分支名称。

  3. 环境变量的作用域

    img

    笔者比较习惯第二个选项(Recomended),这样就可以在cmd或者powershell中直接使用git命令了,而且有些软件由于会引用git命令,可能需要git支持,比如野火大学堂,这样就很方便了,第三个选项要慎重!可能会污染系统本身的环境变量,导致很多自带cmd或者powershell的命令被替换为这个Unix环境中的命令。

    如果你仅仅需要在Git Bash中使用,选第一个即可。

  4. 换行符转换

    img

    如果做跨平台项目,推荐默认第一项。

    这也是经常出问题的地方。

    也可以设置为 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 来指定这种方式。
  5. 用哪种终端模拟器配合 Git-Bash 使用

    img

    推荐使用 MinTTY。

  6. 选择 git pull 的默认行为

    img

    保持默认即可

    pull 的行为主要有 rebase、merge 和 fast-forward,主要由变量 pull.rebasepull.ff 控制。

    • rebase 的行为可以理解为每次都将自己的提交放在 remote 提交之后;

    • merge 的行为是将生成一个新的节点;

    • fast-forward 则会在一个提交树上类似于 rebase,当出现分叉时行为类似于 merge,如果是 ff-only 时只会产生 rebase 行为,出现分叉则会导致命令失败。

      img
      • 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
    

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

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

相关文章

前端常见基础面试题css篇

目录 1.css3有哪些新特性? 2.CSS有哪些基本选择器?它们的权重是如何表示的? 3.css 选择器的类型优先级排序 4.写出几种CSS实现元素两个盒子垂直水平居中的代码 5.CSS 常见的伪类和伪元素有哪些? 6.CSS的引入方式有哪些?ink…

CMMI-外包与采购管理

外包与采购管理(Outsourcing and Procurement Management, OPM)是指外包管理和采购管理,目的是选择合适的承包商和供应商,并依据合同进行有效的管理。外包与采购管理过程域是SPP模型的重要组成部分。本规范阐述了外包与采购管理过…

自定义认证器

自定义认证器工作流程 1、设备向AWS IoT发送http请求,包含token和token签名 2、IoT判断这是一个自定义认证请求,然后确认token和token签名是否匹配 3、Lambda函数验证token之后,将输出5项数据, isAuthenticated:求是…

Zookeeper入门与应用

Zookeeper入门与应用1.简介1.1.应用场景1.2.Zookeeper的设计目标1.3数据模型2. 单机安装3.常用shell命令3.1.查询3.2.创建3.3.更新3.4.删除4.zookeeper的Acl权限控制案例/远程登录acl 超级管理员5.zookeeper的 JavaAPI连接到Zookeeper5.1.新增节点5.2.修改节点5.3.删除节点5.4.…

4、数组、切片、map、channel

目录一、数组二、切片三、map四、channel五、引用类型一、数组 数组: 数组是块连续的内存空间,在声明的时候必须指定长度,且长度不能改变所以数组在声明的时候就可以把内存空间分配好,并赋上默认值,即完成了初始化数组…

Spring反射内置工具类ReflectionUtils

Spring反射内置工具类ReflectionUtils前言反射1,什么是反射2,反射的实现2.1获取class对象的三种实现2.1.1Object ——> getClass();2.1.2 任何数据对象(包括数据基本类型)都有一个静态的class属性通过Class类的静态方法&#x…

TX Text Control .NET 31.0 SP1 for WPF 企业版Crack

将文档编辑、创建和 PDF 生成添加到 WPF 应用程序。 TX Text Control for WPF Enterprise 是一个免版税、完全可编程的丰富编辑控件,它在专为 Visual Studio 设计的可重用组件中为开发人员提供了广泛的文字处理功能。它提供全面的文本格式,强大的邮件合并…

golang fmt.Sprintf(“%.2f“) 的舍入问题

首先,fmt.Sprintf("%.2f")使用的是banker rounding 而不是四舍五入,banker rounding 的定义如下(来自百度百科):1.要求保留位数的后一位如果是4,则舍去。例如5.214保留两位小数为5.21。2.如果保留…

第四代英特尔至强重磅发布,芯片进入下半场:软硬加速、绿色可持续

编辑 | 宋慧 出品 | CSDN 云计算 2023 年的第二周,英特尔重磅发布其企业级芯片领域重要的产品——第四代英特尔 至强 可扩展处理器。作为数据中心处理器当之无愧的王牌产品,迄今为止,英特尔已经向全球客户交付了超8500万颗​至强可扩展处理器…

agent扩展-自定义外部加载路径

自定义classLoader实现加载外部jar, 以skywalking agent 类加载器为例子 整体思路 扩展findClass ,解决loadClass可以查找到扩展findResource,解决getResources可以获取到资源 基本原理 ClassLoader loadClass的加载顺序 findLoadedClass 加载本地已经…

Spring Boot学习篇(十三)

Spring Boot学习篇(十三) shiro安全框架使用篇(五) 1 准备工作 1.1 在SysUserMapper.xml中书写自定义标签 <select id"findRoles" resultType"string">select name from sys_role where id (select roleid from sys_user_role where userid (S…

Matlab论文插图绘制模板第77期—对数刻度横向柱状图

在之前的文章中&#xff0c;分享了Matlab对数刻度柱状图的绘制模板&#xff1a; 进一步&#xff0c;再来看一下对数刻度横向柱状图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab论文插图绘制模板系列&#xff0c;旨在降低大家使用Matlab进行科研绘…

[WTL/ATL]_[初级]_[TreeView控件如何显示ToolTip]

场景 在开发界面程序时&#xff0c;CTreeViewCtrl(它实际内部封装的就是Win32的TreeView控件)一般会用来作为选择某些类型的树形菜单&#xff0c;点击某项的时候&#xff0c;右边能显示某些对应的数据。当这个控件的宽度固定时&#xff0c;有时候每行的文本项可能由于过长从而…

【图像分类】基于PyTorch搭建LSTM实现MNIST手写数字体识别(双向LSTM,附完整代码和数据集)

写在前面&#xff1a; 首先感谢兄弟们的关注和订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 在https://blog.csdn.net/A…

【CSS】元素居中总结-水平居中、垂直居中、水平垂直居中

【CSS】元素居中一、 水平居中1.行内元素水平居中&#xff08;1&#xff09;text-align2.块级元素水平居中2.1 margin&#xff08;1&#xff09;margin2.2布局&#xff08;1&#xff09;flex justify-content&#xff08;推荐&#xff09;&#xff08;2&#xff09; flexmargin…

张驰咨询:关于六西格玛,有一些常见的疑惑!

​ 很多想要学习六西格玛的学员&#xff0c;经常会有这些困惑&#xff1a; 以前没有接触过六西格玛&#xff0c;需要什么基础吗&#xff1f;自学还是培训&#xff1f;哪些行业会用到六西格玛呢&#xff1f;学习六西格玛对以后的工作有哪些帮助&#xff1f;如何选择六西格玛培…

STM32配置读取双路24位模数转换(24bit ADC)芯片CS1238数据

STM32配置读取双路24位模数转换&#xff08;24bit ADC&#xff09;芯片CS1238数据 CS1238是一款国产双路24位ADC芯片&#xff0c;与CS1238对应的单路24位ADC芯片是CS1237&#xff0c;功能上相当于HX711和TM7711的组合。其功能如下所示&#xff1a; 市面上的模块&#xff1a; …

股票买卖接口怎么来的?

现在股票买卖接口主要是在线上研发&#xff0c;有专业的开发团队进行源码开发和完善&#xff0c;但是&#xff0c;常常会在开发过程中出现问题&#xff0c;也就是遇到一些特殊的情况需要及时处理&#xff0c;那么股票买卖接口怎么开发实现出来的&#xff1f;一、股票买卖接口开…

案例分享| 助力数字化转型:广州期货交易所全栈信创项目管理平台上线

广州期货交易所项目管理平台基于易趋&#xff08;easytrack&#xff09;进行实施&#xff0c;通过近半年的开发及试运行&#xff0c;现已成功交付上线、推广使用&#xff0c;取得了良好的应用效果。1. 关于广州期货交易所&#xff08;以下简称广期所&#xff09;广期所于2021年…

MySQL8.0安装教程

文章目录1.官网下载MySQL2.下载完记住解压的地址&#xff08;一会用到&#xff09;3.进入刚刚解压的文件夹下&#xff0c;创建data和my.ini在根目录下创建一个txt文件&#xff0c;名字叫my&#xff0c;文件后缀为ini&#xff0c;之后复制下面这个代码放在my.ini文件下&#xff…