Git技能树(2):Git安装
在你开始使用 Git
前,需要将它安装在你的计算机上。 即便已经安装,最好将它升级到最新的版本。 你可以通过软件包或者其它安装程序来安装,或者下载源码编译安装。
下面,我们将会介绍不同操作系统上 Git
的安装方法。
在 Windows 上安装
在 Windows
上安装 Git
的方法如下:
使用官方版本安装
官方版本可以在 Git
官方网站下载。 打开 https://git-scm.com/download/win
,然后选择相应的版本即可。
要注意这是一个名为
Git` for Windows` 的项目(也叫做 `msys`Git
),和Git
是分别独立的项目;更多信息请访问 http://msysgit.github.io/。
下载完成后,按照提示进行安装即可。
Chocolatey
自动安装
如果要进行自动安装,你可以使用 Git Chocolatey
包。 注意 Chocolatey
包是由社区维护的。
Chocolatey
官网:https://chocolatey.org
安装好 Chocolatey
后,执行如下命令即可:
choco install git.install
在 macOS 上安装
在 Mac
上安装 Git
有多种方式。 最简单的方法是安装 Xcode Command Line Tools
。 Mavericks (10.9)
或更高版本的系统中,在 Terminal
里尝试首次运行 git
命令即可。
$ git --version
如果没有安装过命令行开发者工具,将会提示你安装。
如果你想安装更新的版本,可以使用二进制安装程序。 官方维护的 macOS
Git
安装程序可以在 Git
官方网站下载,网址为 https://git-scm.com/download/mac。
在 Linux 上安装
在 Linux
上用二进制安装程序来安装基本的 Git
工具,可以使用发行版包含的基础软件包管理工具来安装。 以 Fedora
为例,如果你在使用它(或与之紧密相关的基于 RPM
的发行版,如 RHEL
或 CentOS
),你可以使用 dnf
:
$ sudo dnf install git-all
如果你在基于 Debian
的发行版上,如 Ubuntu
,请使用 apt
:
$ sudo apt install git-all
要了解更多选择,Git
官方网站上有在各种 Unix
发行版的系统上安装步骤,网址为 https://git-scm.com/download/linux。
Git环境配置
好了,当你当完成了 Git
的安装后,接下来我们就需要对 Git
进行一些必要的环境配置。
通常情况下,每台计算机上只需要配置一次 Git
,当 Git
程序升级时会保留配置信息。 你可以在任何时候再次通过运行 git config
命令来修改它们。
git config
Git
自带一个 git config
的工具来帮助设置控制 Git
外观和行为的配置变量。
接下来,我们先学习如何通过 git config
命令来配置用户信息
配置用户名和邮件地址
安装完 Git
之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git
提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:
$ git config --global user.name "李老师" $ git config --global user.email li@csdn.net
再次强调,如果使用了 --global
选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git
都会使用那些信息。
当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有
--global
选项的命令来配置。
检查配置
检查配置
如果想要检查你的配置,可以使用 git config --list
命令来列出所有 Git
当时能找到的配置。
$ git config --list user.name= "李老师" user.email=li@csdn.net color.status=auto color.branch=auto color.interactive=auto color.diff=auto ...
你可能会看到重复的变量名,因为 Git
会从不同的文件中读取同一个配置(例如:/etc/gitconfig
与 ~/.gitconfig
)。 这种情况下,Git
会使用它找到的每一个变量的最后一个配置。
你可以通过输入 git config <key>:
来检查 Git
的某一项配置,例如:
$ git config user.name 李老师
更多Git 配置
既然已经在系统上安装了 Git
,你会想要做几件事来定制你的 Git
环境。 每台计算机上只需要配置一次,程序升级时会保留配置信息。 你可以在任何时候再次通过运行命令来修改它们。
Git
自带一个 git config
的工具来帮助设置控制 Git
外观和行为的配置变量。 这些变量存储在三个不同的位置:
/etc/gitconfig
文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行git config
时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)~/.gitconfig
或~/.config/git/config
文件:只针对当前用户。 你可以传递 --global 选项让Git
读写此文件,这会对你系统上 所有 的仓库生效。- 当前使用仓库的
Git
目录中的config
文件(即.git/
config``):针对该仓库。 你可以传递 --local 选项让Git
强制读写此文件,虽然默认情况下用的就是它。。 (当然,你需要进入某个Git
仓库中才能让该选项生效。)
每一个级别会覆盖上一级别的配置,所以 .git/config
的配置变量会覆盖 /etc/gitconfig
中的配置变量。
在 Windows
系统中,Git
会查找 $HOME
目录下(一般情况下是 C:\Users\$USER
)的 .gitconfig 文件。 Git
同样也会寻找 /etc/gitconfig
文件,但只限于 MSys
的根目录下,即安装 Git
时所选的目标位置。 如果你在 Windows
上使用 Git
2.x 以后的版本,那么还有一个系统级的配置文件,Windows
XP 上在 C:\Documents and Settings\All Users\Application Data\
Git\config
,Windows
Vista 及更新的版本在 C:\ProgramData\
Git\config
。此文件只能以管理员权限通过 git config -f <file>
来修改。
你可以通过以下命令查看所有的配置以及它们所在的文件:
$ git config --list --show-origin
Git 颜色配置
到目前为止,我们已经配置了 user.name
和 user.email
,实际上,Git 还有很多可配置项。
比如,让 Git
显示颜色,会让命令输出看起来更醒目:
$ git config --global color.ui true
Git 显示颜色
这样,Git 会适当地显示不同的颜色,比如使用`git status`命令后文件名就会标上颜色。
Git忽略文件配置
有些时候,你必须把某些文件放到 Git
工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件等等,每次git status
都会显示Untracked files ...
,这种情况下,就可以实用忽略特殊文件 .gitignore
来很方便的解决这个问题。
首先我们在 Git
工作区的根目录下创建一个特殊的 .gitignore
文件,然后把要忽略的文件名填进去,Git
在每次进行提交的时候就会自动忽略这些文件。
忽略文件的规则
日常使用中,我们一般不需要从头开始编辑.gitignore
文件,已经有各种现成的种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://gitcode.net/codechina/gitignore
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如
Java
编译产生的.class文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
让我们来看一个例子:
假设你在 Windows
下进行 Python
开发,Windows
会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini
文件,因此你需要忽略 Windows
自动生成的垃圾文件:
.gitignore 文件
# Windows: Thumbs.db ehthumbs.db Desktop.ini
然后,继续忽略Python
编译产生的.pyc、.pyo、dist
等文件或目录:
.gitignore 文件
# Python: *.py[cod] *.so *.egg *.egg-info dist build
加上你自己定义的文件,最终得到一个完整的.gitignore
文件,内容如下:
.gitignore 文件
# Windows: Thumbs.db ehthumbs.db Desktop.ini # Python: *.py[cod] *.so *.egg *.egg-info dist build # My configurations: db.ini deploy_key_rsa
最后一步就是把.gitignore
也提交到 Git
,就完成了!当然检验.gitignore
的标准是git status
命令是不是说working directory clean
。
有些时候,你想添加一个文件到 Git
,但发现添加不了,原因是这个文件被.gitignore
忽略了:
强制添加被忽略文件
$ git add App.class The following paths are ignored by one of your .gitignore files: App.class Use -f if you really want to add them.
如果你确实想添加该文件,可以用-f
强制添加到 Git
:
$ git add -f App.class
或者你发现,可能是.gitignore
写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore
命令检查:
检查忽略规则
$ git check-ignore -v App.class .gitignore:3:*.class App.class
Git会告诉我们,.gitignore
的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。
还有些时候,当我们编写了规则排除了部分文件时:
# 排除所有.开头的隐藏文件: .* # 排除所有.class文件: *.class
但是我们发现.*
这个规则把.gitignore
也排除了,并且App.class
需要被添加到版本库,但是被*.class
规则排除了。
添加例外规则
这个时候,虽然可以用git add -f
强制添加进去,但我们建议你可以添加两条例外规则:
# 排除所有.开头的隐藏文件: .* # 排除所有.class文件: *.class # 不排除.gitignore和App.class: !.gitignore !App.class
把指定文件排除在.gitignore
规则外的写法就是!+文件名
,所以,只需把例外文件添加进去即可。
Git 配置别名
除了通过 配置忽略文件 来提高git commit
时的便捷性外,Git
中还有一种可以让大家在敲入 Git
命令时偷懒的办法——那就是配置 Git
别名。
配置 git status
/commit/checkout/branch
比如在使用git status
命令时,我们可以通过配置别名的方式将其配置为git st
,这样在使用时是不是就比输入 git status
简单方便很多呢?
我们只需要敲一行命令,告诉 Git
,以后st
就表示status
:
$ git config --global alias.st status
当然还有别的命令可以简写,很多人都用co
表示checkout
,ci
表示commit
,br
表示branch
:
配置别名
$ git config --global alias.co checkout $ git config --global alias.ci commit $ git config --global alias.br branch
配置完成以上别名后,以后提交就可以简写成:
$ git ci -m "sth."
--global
参数是全局参数,也就是这些命令在这台电脑的所有 Git
仓库下都可以使用。
配置 git reset HEAD file
再比如git reset HEAD file
命令,他可以把暂存区的修改撤销掉(unstage),重新放回工作区。既然是一个unstage
操作,就可以配置一个unstage
别名:
$ git config --global alias.unstage 'reset HEAD'
当你敲入命令:
$ git unstage test.py
实际上 Git
执行的是:
$ git reset HEAD test.py
配置 git log
-1
配置一个git last
,让其显示最后一次提交信息:
$ git config --global alias.last 'log -1'
这样,用git last
就能显示最近一次的提交:
$ git last commit 4aac6c7ee018f24d2dabfd01a1e09c77612e1a4e (HEAD -> master) Author: Miykael_xxm <xiongjiamu@gmail.com> Date: Tue Nov 17 11:14:15 2020 +0800 branch test
配置 git lg
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
让我们来看看 git lg
配置好之后的效果:
以上这些就是 git
常用的一些配置了。
Git 配置文件
这些自定义的Git
配置文件通常都存放在仓库的.git/config
文件中:
全局配置文件
$ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = git@gitcode.net:codechina/learngit.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [alias] last = log -1
别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。
而当前用户的 Git
配置文件放在用户主目录下的一个隐藏文件.gitconfig
中:
用户配置文件
$ cat .gitconfig [alias] co = checkout ci = commit br = branch st = status [user] name = Your Name email = your@email.com [color] ui = true
配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。