Windows Git Bash 配置

您所在的位置:网站首页 manjaro配置要求 Windows Git Bash 配置

Windows Git Bash 配置

2023-02-15 21:32| 来源: 网络整理| 查看: 265

Windows Git Bash 配置

本文参考的文章:

在 Windows 的 Git Bash 中使用包管理器 - iris (ginshio.org)Git bash 安装 pacman & Windows 解压 zst 文件 | 伪斜杠青年 (lckiss.com)git bash 下 pacman 环境配置_zhouguoqionghai的博客-CSDN博客_warning: database file for ‘clangarm64’ does not e 一、Git的安装

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

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

img

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

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

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

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

img

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

环境变量的作用域

img

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

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

换行符转换

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 来指定这种方式。

用哪种终端模拟器配合 Git-Bash 使用

img

推荐使用 MinTTY。

选择 git pull 的默认行为

img

保持默认即可

pull 的行为主要有 rebase、merge 和 fast-forward,主要由变量 pull.rebase 和 pull.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.045bzip2curlgettextgnupgmsys2-keyringpacman-mirrorswhichxzzstd

然而,我们并不需要安装列出的所有依赖,因为 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 安装软件包测试

为了方便后面自行安装软件包,安装zst解压工具用于解压zst包

pacman -S zstd

可能会遇到冲突问题

错误:无法提交处理 (有冲突的文件)

看来是依赖的文件已经存在,所以冲突了。

pacman 的 --force 选项已经丢弃,使用 --overwrite 选项来代替。

pacman -S --overwrite="*" zstd

如果出现以下提示,关闭 git bash,重新打开即可。

dofork: child -1 - forked process 17448 died unexpectedly

接下来可以测试安装screenfetch和neofetch来测试。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3