这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

安装

介绍Git的安装,使用,配置和优化

详细介绍如何在各个操作系统中安装git。

1 - linux安装

在linux上安装Git

以下ubuntu版本验证OK:

  • 16.04
  • 20.04
  • 22.04

以下debian版本验证OK:

  • debian12

安装

为了拿到最新版本的 git,增加仓库然后再安装:

sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

安装完成之后,验证版本:

git --version
git version 2.43.0

此时 git 是在 /usr/bin/ 目录下:

root@sky2:~# which git
/usr/bin/git
root@sky2:~# ls -l /usr/bin/git
-rwxr-xr-x 1 root root 1920512 Oct  4 03:50 /usr/bin/git

参考资料

2 - MacOS安装

在MacOS上安装Git

手工安装

下载

git官网的下载页面找到mac版本

https://git-scm.com/download/mac

下载得到安装包,如 git-2.19.0-intel-universal-mavericks.dmg

安装

安装过程基本按照默认设置,一路next就好了。

修复

有些在升级macos的版本之后,再使用git时会报错如下:

$ git version
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

此时需要重新安装 xcode command line:

$ xcode-select --install

参考资料:

brew安装

参考 https://git-scm.com/download/mac 页面的说明。

$ brew install git
……
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.
Subversion interoperability (git-svn) is now in the `git-svn` formula.
zsh completions and functions have been installed to:
 /opt/homebrew/share/zsh/site-functions
Emacs Lisp files have been installed to:
 /opt/homebrew/share/emacs/site-lisp/git
==> **Summary**
🍺 /opt/homebrew/Cellar/git/2.35.1: 1,523 files, 43.5MB
==> **Running `brew cleanup git`...**
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
==> **Caveats**
==> **git**
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.
Subversion interoperability (git-svn) is now in the `git-svn` formula.
zsh completions and functions have been installed to:
 /opt/homebrew/share/zsh/site-functions
Emacs Lisp files have been installed to:
/opt/homebrew/share/emacs/site-lisp/git

验证安装:

git --version
git version 2.32.0 (Apple Git-132)

3 - windows安装

在windows上安装Git

下载

git官网的下载页面找到windows版本的下载页面:

https://git-scm.com/download/win

下载最新版本:

https://github.com/git-for-windows/git/releases/download/v2.47.0.windows.2/Git-2.47.0.2-64-bit.exe

下载得到安装包,如 Git-2.47.0.2-64-bit.exe。

安装

安装路径选择 C:\Users\sky\work\soft\git 或者 D:\sky\work\soft\git

安装过程基本按照默认设置,一路next就好了。

配置

修改启动后的默认路径

安装完成之后,桌面的 Git Bash 快捷方式打开之后,默认进入当前用户的home目录。

如果需要修改,比如我个人习惯直接进入代码存放路径如 C:\work\code 或者 D:\sky\work\code,则需要修改快捷方式的属性。

编辑快捷方式的属性:

目标中删除 --cd-to-home, 然后将起始位置从默认的 %HOMEDRIVE%%HOMEPATH% 修改为 C:\work\code

修改控制台字体

Git Bash 控制台默认的字体如果不合适(通常字体偏小),可以修改。

  1. 点下图中红色箭头处,下拉菜单中选择"Options"

  2. 在 “Text” 中可以选择字体和大小

安装配置 zsh

这些工作是 windows 工作环境配置的一部分,具体请见 https://skyao.io/learning-windows11/docs/develop/zsh/

4 - 初始化配置

配置git的基本信息

查看 git 配置

安装之后,使用下面的命令查看 git 的配置:

$ git config --list

credential.helper=osxkeychain
user.name=Sky Ao
user.email=aoxiaojian@gmail.com
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
remote.origin.url=git@github.com:skyao/learning-git.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
remote.docsy.url=git://github.com/skyao/docsy-example.git
remote.docsy.fetch=+refs/heads/*:refs/remotes/docsy/*

配置全局的name和email

使用下面的命令设置全局的用户 name 和 email :

git config --global --edit

然后修改里面的内容,设置好 name 和 email:

# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
name = Sky Ao
email = aoxiaojian@gmail.com

也可以通过下面两条命令来分别设置:

git config --global user.name "Sky Ao"
git config --global user.email "aoxiaojian@gmail.com"

上面两个方式都是修改全局配置文件,默认地址是 ~/.gitconfig,可以直接通过 vi 等命令打开修改。

配置单个仓库的name和email

如果有某个仓库需要设置和默认全局用户不一样的 name 和 email,则可以通过如下命令:

git config user.name "aoxiaojian"
git config user.email "aoxiaojian@hotmail.com"

通过可以通过命令 git config --list 进行查看,配置内容同样存放在文件 ~/.gitconfig 中。

参考资料

5 - 配置ssh

配置git以通过ssh的方式访问git仓库

为了在不同场合使用不同的 ssh key,或者是本地ssh登录时使用和代码仓库不一样的 ssh key,就需要设置让 git 支持多个 ssh key。

最常见的,需要准备两组ssh key:一个用来本地ssh登录避免输入密码麻烦,一个用来登录github。

ssh登录的key

ssh-keygen -t rsa -C "localssh"

文件名默认id_rsa,不设置密码:

$ ssh-keygen -t rsa -C "localssh"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sky/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/sky/.ssh/id_rsa
Your public key has been saved in /home/sky/.ssh/id_rsa.pub

这样就得到 id_rsa 和 id_rsa.pub 两个文件。

.ssh/id_isa.pub 文件到linux服务器端:

scp ~/.ssh/id_rsa.pub sky@192.168.0.10:/home/sky 

在ubuntu server服务器上运行:

mkdir -p .ssh
touch ~/.ssh/authorized_keys
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

以后简单输入 “ssh server.ip” 即可自动 SSH 登录不必输入密码。

github的key

ssh-keygen -t rsa -C "github"

文件名默认id_rsa,不设置密码:

$ ssh-keygen -t rsa -C "github"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sky/.ssh/id_rsa): id_rsa_github
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_rsa_github
Your public key has been saved in id_rsa_github.pub

这样就得到 id_rsa_github 和 id_rsa_github.pub 两个文件。将 id_rsa_github.pub 的内容提交到 github 即可使用。

参考资料

6 - 配置代理

配置git代理以加速访问

linux 配置

vi ~/.ssh/config 打开文件(如果不存在则新建文件),内容如下:

# 这里必须是 github.com,因为这个跟我们 clone 代码时的链接有关
Host github.com
    # 如果用默认端口,这里是 github.com,如果想用443端口,这里就是 ssh.github.com 详
    # 见 https://help.github.com/articles/using-ssh-over-the-https-port/
    HostName github.com
    User git
    # 如果是 HTTP 代理,把下面这行取消注释,并把 proxyport 改成自己的 http 代理的端>口
    #ProxyCommand socat - PROXY:192.168.2.1:%h:%p,proxyport=7890
    # 如果是 socks5 代理,则把下面这行取消注释,并把 6666 改成自己 socks5 代理的端口
    ProxyCommand nc -v -x 192.168.2.1:7891 %h %p
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github

windows 配置

在 windows 下的 gitbash 中,由于没有 nc 命令,因此上面的命令会失败。需要替换为 connect 命令:

    ......
    #ProxyCommand socat - PROXY:192.168.2.1:%h:%p,proxyport=7890
    ProxyCommand connect -S 192.168.2.1:7891 %h %p

7 - DNS污染

配置DNS以避免DNS污染

github 和一些相关的域名,经常被污染,导致无法解析从而造成 git clone 失败。

解决的方式除了使用避开了 DNS 污染的干净的 DNS 代理服务器外,还有一个方式就是在本地 hosts 文件中直接设置相关的 host,避开 DNS 污染。

linux 下设置 hosts

在 linux 下,修改 /etc/hosts 文件:

sudo vi /etc/hosts

加入以下记录:

199.232.68.133 raw.githubusercontent.com
20.205.243.166 github.com

linux 下这个修改可以即时生效,无需重启或者注销。

windows 下设置 hosts

类似的修改 C:\Windows\System32\drivers\etc 文件。不过这个文件很可能是被设置为了"只读",因此修改前要先去除"只读"属性,可以在修改完成之后再恢复为"只读"。设置的方式和 linux 下是一样的:

199.232.68.133 raw.githubusercontent.com
20.205.243.166 github.com

重启,或者手工刷新dns缓存。打开cmd命令行,输入以下命令:

ipconfig /flushdns