在你开始使用 Git
前,需要将它安装在你的计算机上。 即便已经安装,最好将它升级到最新的版本。 你可以通过软件包或者其它安装程序来安装,或者下载源码编译安装。
下面,我们将会介绍不同操作系统上 Git
的安装方法。
在 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
在 Mac
上安装 Git
有多种方式。 最简单的方法是安装 Xcode Command Line Tools
。 Mavericks (10.9)
或更高版本的系统中,在 Terminal
里尝试首次运行 git
命令即可。
$ git --version
如果没有安装过命令行开发者工具,将会提示你安装。
如果你想安装更新的版本,可以使用二进制安装程序。 官方维护的 macOS
Git
安装程序可以在 Git
官方网站下载,网址为 https://git-scm.com/download/mac。
在 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 config
命令来修改它们。
git config
Git
自带一个 git config
的工具来帮助设置控制 Git
外观和行为的配置变量。
点击阅读更多关于 git config
的知识
接下来,我们先学习如何通过 git config
命令来配置用户信息
安装完 Git
之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git
提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:
$ git config --global user.name "李老师"
$ git config --global user.email [email protected]
再次强调,如果使用了 --global
选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git
都会使用那些信息。
当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有
--global
选项的命令来配置。
检查配置
如果想要检查你的配置,可以使用 git config --list
命令来列出所有 Git
当时能找到的配置。
$ git config --list
user.name= "李老师"
user.email=[email protected]
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
你可能会看到重复的变量名,因为 Git
会从不同的文件中读取同一个配置(例如:/etc/gitconfig
与 ~/.gitconfig
)。 这种情况下,Git
会使用它找到的每一个变量的最后一个配置。
你可以通过输入 git config
来检查 Git
的某一项配置,例如:
$ git config user.name
李老师
既然已经在系统上安装了 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
来修改。
你可以通过以下命令查看所有的配置以及它们所在的文件:
$ git config --list --show-origin
到目前为止,我们已经配置了 user.name
和 user.email
,实际上,Git 还有很多可配置项。
比如,让 Git
显示颜色,会让命令输出看起来更醒目:
$ git config --global color.ui true
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 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 <[email protected]>
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/config
文件中:
全局配置文件
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = [email protected]: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 = [email protected]
[color]
ui = true
配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。