Git配置相关操作
# Git 配置相关操作
# Git的配置文件
Git有三个主要的配置文件:
三个配置文件的优先级是 ① < ② < ③
① 系统全局配置(--system):包含了适用于系统所有用户和所有仓库(项目)的配置信息,存放在 Git 安装目录下:C:\Program Files\Git\etc\gitconfig
② 用户全局配置(--global):当前系统用户的全局配置,存放用户目录:C:\Users\[系统用户名]\.gitconfig
。
③ 仓库/项目配置(--local):仓库(项目)的特定配置,存放在项目目录下:.git/config
# 查看所有配置(包括系统、全局和当前仓库的配置):
git config --list
git config -l
# 查看系统配置
git config --system --list
# 查看当前用户(global)全局配置
git config --global --list
# 查看当前仓库配置信息
git config --local --list
cat config
# 查看特定全局配置项(例如,查看全局用户的姓名和电子邮件)
git config --global user.name
git config --global user.email
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 设置当前 git 项目的用户名和邮箱
# 查看配置
cat config
# 修改【当前项目】用户名
git config user.name "name"
# 修改邮箱
git config user.email "your_email@163.com"
配置成功后,查看配置,会发现多了一份 【
user
】 的信息。
# 换行符配置
在不同的操作系统中,行结束符是不同的
名词解释:
CR
:Carriage Return,对应 ASCII 中转义字符\r,表示回车LF
:Linefeed,对应 ASCII 中转义字符 \n,表示换行CRLF
:Carriage Return & Linefeed,\r\n,表示回车并换行
众所周知,
- Windows 操作系统采用两个字符来进行换行,即
CRLF
; - Unix/Linux/Mac OS X 操作系统采用单个字符
LF
来进行换行; - 另外,MacIntosh 操作系统(即早期的 Mac 操作系统)采用单个字符
CR
来进行换行。
当你在 Windows 上使用 Git 并且想要避免在行结束符上的问题时,你可能会遇到以下两种常见的配置
core.autocrlf true
:Windows 默认配置
当你在 Windows 上检出(克隆或拉取)文件时,Git 会自动将
LF
转换为CRLF
。这可以防止在 Windows 命令行中显示文件时出现奇怪的字符。当你提交(commit)文件到仓库时,Git 会将 CRLF 转换回
LF
。
core.autocrlf input
:- 这个设置会告诉 Git 在检出文件时不进行任何转换,保持文件中的
LF
行结束符不变。这通常用于当你想要确保在检出时获得准确的行结束符,或者当你的编辑器或 IDE 可以正确处理LF
而不是CRLF
时。
- 这个设置会告诉 Git 在检出文件时不进行任何转换,保持文件中的
git 相关配置
全局配置 --
CRLF
git config --global core.autocrlf true
1全局配置 --
LF
git config --global core.autocrlf input
1单个项目配置 --
LF
# 这个设置只会影响当前项目的 .git 配置目录。如果你在多个项目中使用不同的配置,你需要分别在每个项目中设置它们。 git config core.autocrlf input
1
2不做处理配置 --
false
或者,如果你不想 Git 做任何行结束符的转换,可以使用:
git config core.autocrlf false
1克隆时配置
此外,如果你想要为新克隆的仓库设置配置,你可以在克隆时使用
--config
选项:# 这将在克隆过程中直接设置仓库的 core.autocrlf 配置 git clone --config core.autocrlf=input https://example.com/repo.git
1
2
# IDE 对整个项目文件,批量转换换行符(CRLF LF)
右键主目录进行设置文件换行符格式
参考:https://www.cnblogs.com/meetuj/p/13495462.html (opens new window)
# 设置安全目录信息
1、场景描述:
用 移动硬盘 或者 U盘 打开 git 管理的项目的时候,IDEA 会识别不了 git 提交的相关信息。报错如下:
更新更改时出错: detected dubious ownership in repository at '[某某项目的文件路径]' is on a file system that does not record ownership To add an exception for this directory, call: git config --global --add safe.directory [某某项目的文件路径]
2、错误原因:
当 Git 在尝试更新或更改代码库时遇到的一个问题。错误的根本原因是 Git 检测到了一个所有权问题(dubious ownership),并且当前的文件系统不记录所有权信息。
3、错误信息解释:
- 文件系统不记录所有权:Git 需要确定哪些文件属于仓库(repository),但当前的文件系统不能提供足够的信息来区分仓库内部和外部的文件。在 Unix-like 系统中,文件所有权是通过用户 ID(UID)和组 ID(GID)来记录的,但在 Windows 或某些网络文件系统中,这些信息可能不可用。
- 可疑的所有权(dubious ownership):Git 无法确定某些文件是否属于仓库,因此它拒绝进行可能导致潜在问题的更改。
4、解决方案:
添加目录到安全目录列表:
按照错误信息中的指示,运行以下命令将你的目录添加到 Git 的全局配置中的安全目录列表:
# 路径示例:E:/codes/ok/chenmeng-test-demos git config --global --add safe.directory /path/to/your/git/repository
1
2这告诉 Git 忽略所有权问题,并将该目录视为“安全”的。
5、其他可能会用到的命令
查看当前配置: 如果你想查看当前的
safe.directory
配置,可以使用以下命令:git config --global --get-regexp safe.directory
1删除指定配置:使用
--unset
删除特定的目录路径(如果你想删除列表中的特定路径):git config --global --unset safe.directory "/path/to/your/git/repository"
1删除某个配置项:使用
--remove-section
或者--unset-all
删除整个配置项(如果你想删除所有safe.directory
配置):git config --global --remove-section safe.directory # 或者 git config --global --unset-all safe.directory
1
2
3这将删除所有与
safe.directory
相关的配置。