上一次我们介绍了 Git 的环境配置和创建本地版本库本节我们一起来看 Git 的更多使用技巧。

忽略文件

为什么要忽略文件呢,版本控制工具的初衷之一就是为了能够更多人更好地合作,方便多人维护同一份代码,那么对于常见的程序源代码,我们往往并不是需要把项目目录下所有的文件都加入到版本控制当中,例如,项目构建过程中生成的文件、本地IDE配置文件等,那么如何才能实现这样的效果呢?

Git 提供了一种可配型很强的机制来允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的目录下是否存在一个名为 .gitignore 的文件,如果存在的话,就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。注意,.gitignore 中指定的文件或目录是可以使用 * 通配符的。

下面是 GitHub 上面给出的常见工程项目的 .gitignore 模板,仅供参考,实际项目中还要根据自己团队间的具体需求进行增改:

链接:A collection of useful .gitignore templates

查看修改内容

我们知道可以通过 git status,随时查看版本库工作区当前的文件状态,那么该如何看到更改的内容呢?这就需要借助 diff 命令了,用法如下:

1
git diff

这样可以查看到所有文件的更改内容,如果你只想查看某一个文件的更改内容,可以使用如下命令:

1
git diff filename

撤销未提交的更改

有时候我们的代码可能会写的过于草率,以至于原本正常的功能,结果反倒被我们改出了问题。遇到这种情况时也不用着急,因为只要代码还未提交,所有修改的内容都是可以撤销的。

比如,继上次提交以后,我们在工作区对文件 a.cpp 做了修改,现在如果想要撤销这个修改就可以使用 checkout 命令,用法如下所示:

1
git checkout a.cpp

执行了这个命令之后,我们对 a.cpp 这个文件所做的一切修改就应该都被撤销了。我们可以通过 git status 查看该文件的状态。

不过这种撤销方式只适用于那些还没有执行过 add 命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销其更改的内容。

此时我们应该先对其取消添加,然后才可以撤回提交。取消添加用的是 reset 命令,用法如下所示:

1
git reset HEAD a.cpp

然后再运行一遍 git status 命令,我们就会发现 a.cpp 这个文件重新变回了为添加状态,此时就可以使用 checkout 命令来将修改的内容进行撤销了。

查看提交记录

当项目开发几个月之后,我们可能已经执行过上百次提交操作了,这时,我们可以使用 log 命令查看历史提交信息,用法如下所示:

1
git log

如果只想看其中一条记录,可以在命令中指定该记录的 id,并加上 -1 参数表示我们只想看到一行记录,如下所示:

1
git log 1fa38 -1

其中提交记录的 id 我们只需要键入开头几个字母就可以了,因为 Git 会帮我们匹配是哪一条提交记录,如果 Git 不能唯一标示,它会提示你。

而如果想查看这条提交记录具体修改了什么内容,可以在命令中加入 -p 参数,命令如下:

1
git log 1fa38 -1 -p

评论