ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Git for Windows 使用指南

2020-02-26 21:44:58  阅读:711  来源: 互联网

标签:git posh Windows Git 使用 使用指南 PowerShell


在类 Unix 操作系统中使用 Git 比较原生态,但是到了 Windows 上却显得有些突兀,首先是 Shell 不能与 Git 很好的集成,然后是各种系统不兼容问题例如不支持软连接等等。还好 M$ 这些年的策略变得和 Linux 比较亲和再加上收购了 Github,在 Windows 上使用 Git 已经变得非常自然了,如果喜欢桌面应用的方式使用 Git 可以使用 Github 推出的桌面版 Github Desktop,我们下面主要讨论在 Shell 环境下使用 Git,如果想在弱智的 CMD 下使用 Git,我建议还是放弃了吧,还好有 PowerShell,一个比 Bash 更高级的 Shell 环境,面向对象的 Shell 环境。下面介绍 Windows 10 环境下使用 Git for windows + PowerShell 的配置方法。

1. Git for Windows 安装

首先去下载最新的稳定版本 https://gitforwindows.org,其实 Git for Windows 目前也没有在底层去实现Git,而是使用了 Mingw-w64 的解决方式去兼容了Windows,这种方法有个硬伤,文件系统的操作效率不会太高,所以对于大型的Repo操作起来效率会比较低。
Git for Windows 安装包使用 Inno Setup 进行打包,安装过程极简。

在这里插入图片描述
上图为选择组件,是否关联文件类型,是否添加右键支持,是否添加桌面图标,是否支持 Git LFS 等,根据个人喜好修改。
在这里插入图片描述
上图为选择默认的编辑器,Git在进行冲突处理,Commit 操作的时候需要依赖一个编辑器去处理交互内容,这里推荐 Visual Studio Code ,在 Windows 下兼容性非常好。
在这里插入图片描述
上图为 Git for Windows 安装后修改 $PATH 环境变量的方式

  • Use Git from Git Bash only

    这种方式不会修改 $PATH 变量,也就是说在 Shell 下不能索引到Git,只能通过 Git for Windows 自带的 Git Bash 来使用Git,如果想通过 PowerShell 使用 Git 这种方式不推荐使用。

  • Git from the command line and also from 3rd-party software

    这种方式只将 git.exe 所在的目录加入到 $PATH 环境变量中,也是默认的推荐方式,如果没有特殊需要这种方式最环保方便。

    C:\Program Files\Git\cmd
    
  • Use Git and optional Unix tools from the Command Prompt

    这种方式会将下面三个目录加入到 $PATH 环境中,会对系统的一些默认应用造成干扰,因为这些目录包含了 MingW64 的一些 package.

    C:\Program Files\Git\cmd
    C:\Program Files\Git\mingw64\bin
    C:\Program Files\Git\usr\bin
    

在这里插入图片描述
上图为加密库的选择,如果没有使用特殊的自签名的 CA 选择哪个都无感。

在这里插入图片描述
上图为选择 Git for Windows 的 line ending 转换方式,这个如果本身编辑代码使用一些专业的编辑器并且非常在意的化可以选择第三项,保持 As-Is 即可.

  • Checkout Windows-style, commit Unix-style line endings

    Check out 时将 LF 转换为 CRLF ,Commit 的时候再将 CRLF 转换为 LF.

    git config --global core.autocrlf true
    
  • Checkout as-is, commit Unix-style line endings

    Check out 时将不转换 ,Commit 的时候再将 CRLF 转换为 LF.

    git config --global core.autocrlf input
    
  • Checkout as-is, commit as-is

    Check out 和 Commit 时都保持不变。

    git config --global core.autocrlf false
    

在这里插入图片描述
上图为关于 Terminal emulater 的选择,这个类似与 Linux 下的 xterm,MacOS 下的 iTerm2,在 Windows 下也有很多选择,例如 CmderConEmu,不过相对于第三方应用,如果 M$ 自家推出了一款的话那当然是作为首选 – Window Terminal ,可以到 Windows Store 上面下载,非常方便。所以上面的选项选什么真的无所谓。

在这里插入图片描述
上图为一些拓展选项

  • Enable file system caching

    是否允许文件缓存,在 Windows 强烈建议打开,因为 Git 在 Windows 下使用最大的障碍就是文件系统的IO效率,这个也可以在安装后自行开关,对应的命令为:

    git config --global core.fscache ture`
    
  • Enable Git Credential Manager

    这个是与 Visual Studio 深度融合的一个功能,对于一个开源工作者这个选项更加的无所谓。

  • Enable symbolic links

    启用符号链接(需要SeCreateSymbolicLink权限),这个就是一个典型的 Linux 和 Windows 的 Gap,在 Linux 环境下通过 ln 创建的软连接可以被 Git 支持,但是如果在 Windows 下 Check out 就会出现很尴尬的现象,目前 Git for Windows 的处理方式为:

    • 如果选择 Enable symbolic links 则将 Linux 下的软链接文件转化为 Windows 下的软连接(symbolic link)文件;
    • 如果不选择 Enable symbolic links 则将 Linux 下的软连接文件转化为 Windows 下的一个文本文件,这个文本文件的文件名不变,文件内容为指向文件的实际路径;

2. Git for PowerShell

通过 PowerShell 使用 Git 也可以像 Oh My Zsh 一样显示 Repository 的分支等状态信息。这个通过 posh-git 来实现,安装非常简单,使用 PowerShell 内置的 NuGet 包管理器即可安装,输入命令:

Install-Module posh-git -Scope CurrentUser -Force

安装后建议不要在 PowerShell 的 $PROFILE 文件中直接导入,因为这样会影响 PowerShell 的启动速度,使用动态加载的方式会比较高效,下面是一个动态加载 posh-git 模块的函数,这样在 PowerShell 下使用 p 键就可以快速开关 posh-git.

function git_prompt {
    if (-not (get-module | Where-Object {$_.Name -eq "posh-git"})) {
        Import-Module -Name posh-git -Scope Global
    } else {
        $GitPromptSettings.EnablePromptStatus = -not $GitPromptSettings.EnablePromptStatus
    }
}
Set-Alias p git_prompt

打开 posh-git 后,如果使用了360等安全防护软件会明显感觉执行命令的效率变低,将安全防护软件关闭即可。
下图为 PowerShell 下的 posh-git 开启状态的截图:
git_for_powershell

3. 参考文档

  1. https://gitforwindows.org/
  2. Git in Other Environments - Git in PowerShell
aggresss 博客专家 发布了100 篇原创文章 · 获赞 221 · 访问量 35万+ 私信 关注

标签:git,posh,Windows,Git,使用,使用指南,PowerShell
来源: https://blog.csdn.net/aggresss/article/details/104510358

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有