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
| git config --global core.autocrlf true
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跨平台工作时,才会碰到下面的问题, 如果一直在单一平台下工作,应该不会碰见该问题。
- 问题描述
- Windows 默认换行符 CRLF
- Linux 默认换行符 LF
- Mac 默认换行符 LF
对于Git仓库中的文件,文件内如果出现非本平台的换行符,文件被视为整个被修改,从而导致出现下面这种情况:
- 对于已经提交的文件, 由于换行符导致的问题, 被Git显示为未提交
- 问题解决方案
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
- 拒绝提交包含混合换行符的文件
- 为什么要 拒绝提交包含混合换行符的文件 ?
因为混合换行符会影响到 Git 的 diff 功能, 导致明明文件内容没有修改,却因为换行符,Git会显示文件被修改,从而影响到我们查看diff。