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

Windows Git Bash 配置

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.lryc.cn/news/4998.html

相关文章:

  • java代码整合kettle9.3实现读取表中的数据,生成excel文件
  • 分享微信点餐小程序搭建步骤_微信点餐功能怎么做
  • 4、数组、切片、map、channel
  • 270 uuid
  • 2023最新简历模板免费下载
  • 【CSS】元素居中总结-水平居中、垂直居中、水平垂直居中
  • spring实现AOP
  • neovim搭建cpp环境
  • SpringBoot AES加密 PKCS7Padding 模式
  • 按键输入驱动
  • 2023年第七周总周结 | 开学倒数第三周
  • Springboot扫描注解类
  • Apache日志分析器
  • 啪,还敢抛出异常
  • Apache JMeter 5.5 下载安装以及设置中文教程
  • string类模拟实现
  • cadence SPB17.4 S032 - allegro - 保存/载入光绘层定义
  • 微服务实战--高级篇:分布式缓存 Redis
  • 【C语言】可变参数列表
  • 目标检测的旋框框文献学习
  • Hive 在工作中的调优总结
  • 每天一道大厂SQL题【Day09】充值日志SQL实战
  • MATLAB 遗传算法
  • 探讨 Java 中 valueOf 和 parseInt 的区别
  • JSON学习笔记
  • 家政服务小程序实战教程07-轮播图组件
  • MySQL之索引创建、删除、唯一索引、普通索引、及命名规则、注意事项
  • 【C++设计模式】学习笔记(3):策略模式 Strategy
  • Java——聊聊JUC中的ThreadLocal
  • 软件工程(4)--螺旋模型