详细介绍如何在各个操作系统中安装git。
安装
1 - linux安装
以下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安装
手工安装
下载
在 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安装
下载
在 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 控制台默认的字体如果不合适(通常字体偏小),可以修改。
-
点下图中红色箭头处,下拉菜单中选择"Options"
-
在 “Text” 中可以选择字体和大小
安装配置 zsh
这些工作是 windows 工作环境配置的一部分,具体请见 https://skyao.io/learning-windows11/docs/develop/zsh/
4 - 初始化配置
查看 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
为了在不同场合使用不同的 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 - 配置代理
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污染
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