Git初始配置和基本使用
在学习完本文之后,你应该能够配置并初始化一个仓库(repository)、开始或停止跟踪(track)文件、暂存(stage)或提交(commit)更改。 本章也将向你演示如何配置 Git 来忽略指定的文件和文件模式、如何迅速而简单地撤销错误操作、如何浏览你的项目的历史版本以及不同提交(commits)间的差异、如何向你的远程仓库推送(push)以及如何从你的远程仓库拉取(pull)文件。
初次运行Git前的配置
用户信息
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
-
$ git config --global user .name "Junk Chen"
-
$ git config --global user .email junkchen@vip.qq.com
“Junk Chen”是你自己设置的名字,junkchen@vip.qq.com是你的邮箱地址。
再次强调,如果使用了 –global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情,Git 都会使用那些信息。当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 –global 选项的命令来配置。
很多 GUI 工具都会在第一次运行时帮助你配置这些信息。
检查配置信息
如果想要检查你的配置,可以使用 git config –list 命令来列出所有 Git 当时能找到的配置。
-
$ git config --list
-
core.autocrlf=true
-
color.diff=auto
-
color.status=auto
-
color.branch=auto
-
help.format=html
-
user.name=JunkChen
-
user.email=junkchen@vip.qq.com
-
你可以通过输入 git config : 来检查 Git 的某一项配置:
-
$ git config user.name
-
Junk Chen
获取帮助
若你使用Git时需要获取帮助,有三种方法可以找到Git命令的使用手册:
-
$ git help <verb>
-
$ git <verb> --help
-
$ man git-<verb>
如想要获得config命令的手册,可执行:
$ git help config
这些命令很棒,因为你随时随地可以使用而无需联网。
安装和初始配置都已经设置好了,下面就来看看具体的应用了。
获取Git仓库
两种获取Git项目仓库的方法: 一是在现有项目或目录下导入所有文件到Git中; 二是从一个服务器克隆一个现有的Git仓库。
在现有目录中初始化仓库
进入该项目目录并输入:
$ git init
该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。
克隆现有的仓库
如果你想获得一份已经存在了的Git仓库的拷贝,可以使用git clone [url]。
$ git clone https://github.com/libgit2/libgit2
该命令执行后会在当前目录下创建一个名为 “libgit2” 的目录,并在在这个目录下初始化一个.git文件夹,从远程仓库拉取所有的数据放在改文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。 请将 https://github.com/libgit2/libgit2 替换为你自己的Git仓库地址。
$ git clone https://github.com/libgit2/libgit2 mylibgit
这将执行与上一个命令相同的操作,不过在本地创建的仓库名字变为 mylibgit。
Git 支持多种数据传输协议。 上面的例子使用的是https:// 协议,不过你也可以使用 git:// 协议或者使用SSH 传输协议,比如 user@server:path/to/repo.git 。
记录每次更新到仓库
现在我们有了一个真实项目的 Git 仓库,并从这个仓库中取出了所有文件的工作拷贝。 当我们对文件做了些修改,在完成一个阶段的目标后,就提交本次更新到仓库。
请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。
检查当前文件的状态
查看文件处于什么状态:
$ git status
跟踪新文件
如果我们的工作目录中创建了新的文件,可使用git add开始跟踪一个文件。如跟踪 READEME.txt 文件:
$ git add READEME.txt
此时再运行 git status 命令,会看到 README 文件状态已发生改变。
git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。
暂存已修改文件
当一个已被跟踪的文件每次被修改后,需要使用 git add 把最新版本添加到暂存区方可进行提交更新,否则不会提交本次更改到仓库中。如 READEME.txt 文件被修改后添加暂存:
$ git add READEME.txt
git add 是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。可理解为 “添加内容到下一次提交中”。
查看已暂存和未暂存的修改
如果 git status 命令的输出对于你来说过于模糊,你想知道具体修改了什么地方,可以用 git diff 命令。
$ git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。
若要查看已暂存的将要添加到下次提交里的内容,可以用 git diff –cached 命令。(Git 1.6.1 及更高版本还允许使用 git diff –staged,效果是相同的,但更好记些。)
git di