Rokcso's blog

Git 使用技巧和注意事项

异常修复:执行 git 命令后终端打印的中文内容乱码

如下图 A 处为异常,正确行为应如下图 B 处所示:

修复方案:调整 Git 全局配置,将 core.quotepath 配置为 false

git config --global core.quotepath false

core.quotepath 这个配置项用于控制 Git 如何显示路径名,默认为 true,当该项配置为 true 时,Git 在显示路径名时会对路径名中的特殊字符进行引号处理(即上图 A 处的乱码)。

创建全局 .gitignore 文件

首先在系统根目录下创建一个 .gitignore_global 文件用来作为 Git 全局 .gitignore 文件管理全局的 Git 忽略配置。

然后调整 Git 全局配置,将 core.excludesfile 配置指定到刚刚创建的 .gitignore_global 文件路径:

git config --global core.excludesfile ~/.gitignore_global

core.excludesfile 这个配置项用于指定全局 .gitignore 文件路径。

macOS 下 Git 忽略 .DS_Store 文件

.DS_Store(全称:Desktop Services Store)是 macOS 系统中的一种隐藏文件,通常存在于每个用户创建的文件夹中,用于存储文件夹的自定义属性和视图设置。

在上述 ~/.gitignore_global 文件中添加如下配置:

.DS_Store

对于已经存在 .DS_Store 文件的 Git 仓库,执行以下命令来查找并删除所有 .DS_Store 文件:

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

这是一个组合命令,以 | 分割两条命令。

命令 作用
find 在目录树中查找文件。
. 指定查找的起始目录为当前目录。
-name .DS_Store 查找所有文件名恰好为 .DS_Store 的文件。
-print0 输出找到的文件路径,并以 null 字符(\0)作为路径之间的分隔符。这种方式可以安全地处理文件名中包含空格、换行符等特殊字符的情况。
xargs 将标准输入数据转换为命令行参数。
-0 告诉 xargs 输入数据是以 null 字符分隔的,这与 find 命令的 -print0 选项相对应。
git rm 从工作目录和索引中删除文件。
-f 强制删除文件,即使它们已经被修改或有未提交的更改。
--ignore-unmatch 如果指定的文件不存在,Git 不报错,而是忽略这个文件。

#skill