Git安装与配置

Git SSH协议代理

Windows下面配置

.ssh 目录下,新建 C:\Users\lukas\.ssh\config 文件。

1
2
3
4
5
6
7
8
9
10
11
proxyCommand "C:\Program Files\Git\mingw64\bin\connect" -S 127.0.0.1:5081 %h %p

Host github.com
User git
Port 22
Hostname github.com

Host ssh.github.com
User git
Port 443
Hostname ssh.github.com
  • 注意是 C:\Users\lukas\.ssh\config 文件, 而不是 C:\Users\lukas\.gitconfig 文件, 不要搞混了。
  • connect 命令,只要安装了 Git for windows 就会有, 记得找到正确的位置。
  • 127.0.0.1:5081 是 socket5 服务器地址
  • 不用写 IdentityFile 指令, 执行git命令时,会自动读取相关私钥文件;只要配置了相应的私钥,就不会有问题。

其他系统配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Host github.com *.github.com
User git
# SSH默认端口22, HTTPS默认端口443
Port 22
Hostname %h
# # 注意修改路径为你的路径
# IdentityFile ~/.ssh/id_ed25519
AddKeysToAgent yes
TCPKeepAlive yes
# Linux/Mac走 HTTP 代理,需要安装socat, brew install socat
# ProxyCommand socat - PROXY:127.0.0.1:%h:%p,proxyport=8080
# linux/Mac走 socks5 代理(如 Shadowsocks) nc是linux自带的工具
# ProxyCommand nc -v -x 127.0.0.1:1080 %h %p

# Windows走 HTTP 代理,connect是git自带的工具
# ProxyCommand connect -H 127.0.0.1:7890 -a none %h %p
# Windows走 socks5 代理(如 Shadowsocks)
# ProxyCommand connect -S 127.0.0.1:7890 -a none %h %p

Git多平台换行符设置

core.autocrlf 配置选项

1
2
3
4
5
6
7
8
# 提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

# 提交时转换为LF,检出时不转换
git config --global core.autocrlf input

# 提交检出均不转换
git config --global core.autocrlf false

core.safecrlf 配置选项

1
2
3
4
5
6
7
8
# 拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

# 允许提交包含混合换行符的文件
git config --global core.safecrlf false

# 提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

换行符实际问题

Git跨平台工作时,才会碰到下面的问题, 如果一直在单一平台下工作,应该不会碰见该问题。

  1. 问题描述
  • Windows 默认换行符 CRLF
  • Linux 默认换行符 LF
  • Mac 默认换行符 LF

对于Git仓库中的文件,文件内如果出现非本平台的换行符,文件被视为整个被修改,从而导致出现下面这种情况:

  • 对于已经提交的文件, 由于换行符导致的问题, 被Git显示为未提交
  1. 问题解决方案

Git跨平台下换行符使用原则:

  • Git提交时统一使用 LF
  • Git检出时, 根据自己的平台来决定是否转换为CRLF
  • 不要提交CRLF到仓库,提交时应该统一使用LF

对于windows平台,推荐Git进行以下设置:

1
2
git config --global core.autocrlf true
git config --global core.safecrlf true

这样配置的意思是:

  • 提交时自动转换为LF,检出时转换为CRLF
  • 拒绝提交包含混合换行符的文件

对于Linux/MAC平台,推荐Git进行以下设置:

1
2
git config --global core.autocrlf input
git config --global core.safecrlf true

这样配置的意思是:

  • 提交时自动转换为LF,检出时不转换为CRLF
  • 拒绝提交包含混合换行符的文件
  1. 为什么要 拒绝提交包含混合换行符的文件 ?

因为混合换行符会影响到 Git 的 diff 功能, 导致明明文件内容没有修改,却因为换行符,Git会显示文件被修改,从而影响到我们查看diff。


Git安装与配置
https://pygyme.com/Git使用总结/git安装与配置/
作者
PYGYME
发布于
2021年12月31日
许可协议