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 不报错,而是忽略这个文件。 |