• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 centOS 上安装 Git

    源码编译安装 Git

    检测本机有没有安装 git:

    dnf info git
    
     #显示如下:
    Available Packages
    Name         : git
    Version      : 2.31.1
    Release      : 2.el9.2
    Architecture : x86_64
    Size         : 124 k
    ......
    
    # Available Packages 表示没有 使用 dnf 在线安装
    # Installed Packages 已经安装
    # 若需要卸载,使用如下命令:
    dnf remove git
    
    rpm -qa | grep git
    # 若没有显示任何信息,表示没有安装。若出现 一些 git 软件包的信息列表,表示已经安装。
    
    # 若已经安装,那么查看 git 安装的位置。
    whereis git
    
    # 若已经安装,卸载 git。参数 --nodeps,不卸载依赖包。
    rpm -e --nodeps git*
    
    


    安装 git 依赖:

    dnf -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
    


    使用 git 源码包,编译安装

    cd /tmp
    wget -c https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.39.0.tar.gz
    tar -zxf git-2.39.0.tar.gz
    cd git-2.39.0
    
    # 配置并安装:
    ./configure --prefix=/usr/local/git
    
    make && make install
    


    创建软链,以便用户直接用 git 命令:

    ln -s /usr/local/git/bin/git /usr/bin/git
    ln -s /usr/local/git/bin/gitk /usr/bin/gitk
    ln -s /usr/local/git/bin/git-shell /usr/bin/git-shell
    ln -s /usr/local/git/bin/git-cvsserver /usr/bin/git-cvsserver
    ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
    ln -s /usr/local/git/bin/git-upload-archive /usr/bin/git-upload-archive
    ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
    
    • /usr/bin:存放所有用户都可使用的应用程序,一般是已安装软件的运行脚本。
    • /usr/sbin:存放超级用户才能使用的应用程序,一般是与服务器软件程序命令相关的程序。


    # 查看已经安装 git 版本
    git --version
    


    配置用户信息

    安装完 Git 之后,需要设置自己的用户名和邮件地址。Git 的用户名和邮箱地址是本地 Git 客户端的一个变量,不随 git 库而改变。每次git commit都会用用户名和邮箱进行记录。进行管理的时候,Git 需要使用这些基本信息,来记录是谁对项目进行了操作。

    git config --global user.name "Your Name"
    git config --global user.email "youremail@domain.com"
    

    首次设置后,会生成配置文件:~/.gitconfig

    # 查看设置信息
    git config --list
    
     #显示如下:
    user.name="Your Name"
    user.email="youremail@domain.com"
    
    # 查看本项目 git 配置,项目根目录下,输入:
    cat .git/config
    
    # 查看 Git 全部配置:
    git config --list
    
    # 查看查看当前仓库配置(优先级最高):
    git config --local --list
    
    # 查看当前用户全局 global 配置(优先级中等):
    git config --global --list
    
    # 查看 Git 系统配置(优先级最低):
    git config --system --list
    


    配置换行符

    生成环境为 centOS 服务器,最终代码是运行此环境下。所以在编程阶段,在 centOS 环境下,统一 Linux 风格lf换行符,是最佳的做法。那么需要实现思路:首先,在提交时(git commit),若存在crlf会自动转换为lf。检出时(git checkout),不转换。然后,对包含lfcrlf混合换行的文件,在提交时(git commit),拒绝。这样设置后,再推拉代码,就发现里面的程序文件的换行符全是lf

    # 提交时转换为 lf,检出时不转换
    git config --global core.autocrlf input
    
    # 拒绝提交包含混合换行符的文件
    git config --global core.safecrlf true
    
    # 设置默认换行符
    git config --global core.eol lf
    
    # 查看设置信息
    git config --list
    
     #显示如下:
    user.name="Your Name"
    user.email="youremail@domain.com"
    core.autocrlf=input
    core.safecrlf=true
    core.eol=lf
    

    另外,本地客户端,需要把编写程序的软件,设置换行字符为lf


    AutoCRLF

    • git config --global core.autocrlf input:提交时(git commit)转换为 LF,检出时(git checkout),不转换。
    • git config --global core.autocrlf true:提交时(git commit)转换为 LF,检出时(git checkout)转换为 CRLF。
    • git config --global core.autocrlf false:提交时(git commit),检出时(git checkout),均不转换。此为 git 默认设置。

    如果core.autocrlf被设置为true,这就意味着你任何时候添加到 git 仓库的文件,git 都会认为它是一个 text 文件,他会在存储提交(git commit)之前把所有的 CRLF 结尾都转换成 LF。无论什么时候你检出时(git checkout),所有的文件的 LF(换行)都会修改为 CRLF(回车换行)。这样就允许项目跨平台开发,即便有不一致的行尾结束风格也都会保证在 commit 之前都一致转换为 LF(换行)。

    用这个方便的转换方式的副作用,就是像你刚才看到的会出现那种警告,就是如果你最初创建的一个文件用 LF 代替 CRLF,那将会按照平常一样用 LF 存储,但是当 git checkout 的时候就会出现 CRLF,对于一些正正常的文本文件,这些还好。但是万一 git 错误的评估了一个二进制文件时,这会是一个很重要的警告,因为 git 将会腐蚀你的二进制文件。


    如果core.autocrlf被设置为false,没有进行过行尾结束的转换,那么文本文件就会按照原样存储。只要所有的开发人员都只是在 linux 或者 windows 上进行开发就会一切正常。但是以我的经验还是倾向于这种结尾的混合最终会导致问题。如果是 windows 开发人员还是设置为 false。



    SafeCRLF

    • git config --global core.safecrlf true:拒绝提交包含混合换行符的文件。
    • git config --global core.safecrlf false:允许提交包含混合换行符的文件。
    • git config --global core.safecrlf warn:提交包含混合换行符的文件时给出警告。此为 git 默认设置。



    EOL

    • git config --global core.eol lf:当文件检入版本库时(git checkout),blob 对象使用 LF 作为换行符,检出的时候工作区文件也使用 LF 作为换行符。
    • git config --global core.eol crlf:当文件检入版本库时,blob 对象使用 LF 作为换行符。当检出到工作区时(git checkout),使用 CRLF 作为换行符。
    • git config --global core.eol native:默认值。即采用操作系统标准的换行符格式。

    属性 eol 用于设定文本文件的换行符格式。对于设置了 eol 属性的文件,如果没有设定 text 属性时,默认会设置 text 属性为 true。属性 eol 的取值如下:eol=crlfeol=lfeol=native。除了通过属性设定换行符格式外,还可以在 Git 的配置文件通过 core.eol 配置变量来设定。两者的区别在于配置文件中的 core.eol 配置变量设置的换行符是一个默认值,没有通过 eol 属性指定换行符格式的文本文件会采用 core.eol 的设置。


    卸载 Git

    若需要卸载 git,使用以下命令:

    # 删除 git 源码
    rm -rf /usr/local/git
    
    # 删除 git 配置文件
    rm -rf ~/.gitconfig
    
    # 删除 git 执行程序软连接
    rm -f /usr/bin/git
    rm -f /usr/bin/gitk
    rm -f /usr/bin/git-shell
    rm -f /usr/bin/git-cvsserver
    rm -f /usr/bin/git-receive-pack
    rm -f /usr/bin/git-upload-archive
    rm -f /usr/bin/git-upload-pack