>> >> >> Reference << << << <<<<<<Ref>>>>>>
Git for Windows
Modified: 2025-12-31 | Author:ljf12825

Windows上的Git(Git for Windows)本质上是一个在Windows平台上“模拟/移植”类Unix Git使用体验的工程集合,而不是原生Unix Git
它不是简单的git.exe,而是

历史背景

Git诞生的环境是

而Windows原生环境缺失这些假设,Git for Windows通过在Windows上构建一个最小可用的Unix来实现

早期的移植方式是

当前的官方移植

  1. Git核心命令(C语言编写,为Windows编译)
  2. MSYS2运行时(提供POSIX环境)
  3. Windows原生工具集成

Git for Windows移植细节

Git本体

与Linux Git使用同一套源码,绝大多数Git行为是平台无关的,差异集中在

兼容层

Git for Windows基于MSYS2/MinGW技术栈

组件作用
MSYS2提供类Unix环境
MinGW-w64用GCC把Unix程序编译成Windows可执行文件
POSIX shim模拟fork/exec/pipe/signal

GNU工具集

Git for Windows自带大量GNU工具,这些工具不等于Linux系统里的GNU Coreutils,区别包括

Git Bash

Git Bash本质是一个bash.exe,跑在MSYS2环境,使用虚拟POSIX路径系统

架构对比

Linux/macOS原生Git:
    Git命令 → 系统调用 → Linux内核

Windows Git:
    Git命令 → MSYS2层 → Win32 API → Windows内核
           ↘ 部分原生Windows实现

移植带来的特点

优点

  1. 命令兼容性 大多数Linux Git命令在Windows上同样工作
git log --oneline --graph --all 
git grep "search_term"
  1. shell环境 Git Bash提供bash shell和常用Unix工具
ls -la | grep .git 
find . -name "*.js"

限制/差异

  1. 文件系统差异 Windows路径分隔符是\, Git内部使用/
git add folder \file.txt # 需要转义或使用/
# Git内部会转换为/ 
git add folder/file.txt 
  1. 权限系统 Windows没有Linux的权限位
git update-index --chmod=+x script.sh # 只能设置“可执行”标记
  1. 符号链接 需要特别配置
git config --global core.symlink true 

Windows原生Git组件

虽然基于移植,但有很多Windows原生优化
性能优化

  1. 文件系统监控(需要管理员权限)
git config --global core.fscache true 
  1. 内置文件系统缓存
git config --global core.preloadindex true 
  1. 并行索引加载
git config --global core.untrackedcache true 

Windows集成特性

  1. 凭据管理器
git config --global credential.helper manager-core 
  1. 换行符自动处理
git config --global core.autocrlf true 
  1. Windows控制台支持 Git 2.34+ 改进的Windows终端支持