在上一篇文章Git新手向引导——初识Git中,学习了关于Git最基本的用法,包括安装Git、创建代码仓库,以及提交本地代码,接下来我们继续学习更多的使用技巧。
忽略文件
在实际项目中,有写临时文件或者是一些自动生成的文件,我们不应该将这些文件添加到版本控制当中去,比如android的gen目录下的文件,否则有可能会对文件的自动生成照成影响。所以我们应该忽略这些文件。
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的
.class
文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
Git提供了一种可配性很强的机制来允许用户将制定的文件或目录排除在版本控制之外,他会检查代码仓库的根目录下是否存在一个名为.gitignore的文件,如果有,就一行行读取这个文件,并把每一行指定的文件或目录排除在版本控制之外。在.gitignore中指定的文件或目录是可以使用“*”通配符的。
现在我们在上次的根目录下创建一个.gitignore的文件和一个file1.txt,再在src目录下创建一个file.txt的文件。然后编辑.gitignore这个文件中的内容,如下图
使用Windows的同学注意了,如果你在资源管理器里新建一个文件.gitignore,它会提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。
这样就表示把file1.txt这个文件给忽略掉,从而使得他们不会加入到版本控制当中。
之后就按照提交代码的方法提交就行了
当然了,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
查看修改内容
多次代码提交之后有可能到后面的时候我们就忘记前面修改了什么东西了,不用怕,Git都会帮你记着的。
查看文件修改情况的方法非常简单,只需要用status命令就行了,在项目根目录输入命令:
$ git status
因为我们没有对之前文件进行修改,所以提示当前项目中没有任何可以提交的文件。那我们在demo.txt中多加一个edit的单词
再输入一遍命令,如图
可以看到,Git提醒我们demo.txt这个文件已经发生更改了,那我们要如何查看更改的内容呢,接下来就要用diff命令了
$ git diff
可以看到修改内容已经显示出来了。这里我们是查看所有文件的更改内容,如果你只想查看单个文件的修改内容,就在后面跟上文件的名字,比如你要查看demo.txt这个文件,命令如下
$ git diff demo.txt
撤销未提交的修改
有时候我们代码修改了之后发现出现了更多的问题,要撤回。这个时候我们代码还未提交,修改的内容也是可以撤销的。
比如我们要撤销刚刚加的单词edit,我们可以使用checkout命令,如下图
然后我们再使用命令查看下
可以看到,当前项目中没有任何可以提交的文件,说明我们刚刚的撤销操作成功了。
注意:因为没有分支,所以这边使用checkout是没有加上“--”的,命令严谨的用法应该是
$ git checkout -- file
否则在有同名分支的时候使用checkout命令会切换到分支上去
不过这个撤销方式只适用于那些还没有执行过add命令的文件,如果某个文件已经被add命令执行添加过了,那么这种方式是无法撤销其更改内容的,做个示范,这次我们还是给demo.txt文件加一行内容,然后使用add命令添加之后用git status命令检查一下,如下图:
现在我们再执行checkout命令,如下
可以发现,demo.txt这个文件还是处于添加状态,所修改的内容也无法撤销掉。
所以我们对于已经添加的文件我们就必须先对其进行取消添加,才可以撤回修改。取消添加使用的是reset命令,用法如下
git reset HEAD file
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
这个时候我们再使用checkout命令来将修改的内容进行撤销就行了。
查看提交记录
当我们开发一个项目一段时间后,我们已经执行过上百次的提交操作了,这个时候你估计已经忘记每次提交都修改了那些内容了,但是Git能一直帮你记录着这些。我们可以使用log命令来查看历史提交信息。用法如下:
$ git log
可以发现,我们之前执行过的提交操作信息都能看到。每次提交记录中都包含提交ID、提交人、提交日期、以及提交描述这四个信息。
当我们提交记录非常多的时候,如果我们只想看其中一条记录,我们可以在命中指定该记录的id,并加上-1表示我们只想看一行记录。
这时你是不是举得这个id过长了呢,这里有个小技巧:右键点击标题栏,在编辑中可以选择标记、复制、黏贴
而如果你想要查看这条提交记录修改了什么内容的话,你就可以在命令中加入-p参数,如图
其中减号表示删除部分,加号表示添加部分
删除文件
有些时候你把本地项目中的某个文件删除了,比如file2.txt这个文件被我们删除了,你可能是手动删除的也可能是命令删除的,命令删除文件如下
$ rm file
这样本地的file.txt文件就被删除了,我们这个时候可来和版本库中对比一下,命令如下
$ git diff HEAD
这里我们可以看到file2.txt这个文件在本地被删掉了
其实在版本库中这个文件还是在的,所以我们可以通过版本库把文件恢复过来命令如下
git checkout -- file
可以看到src文件夹中file2.txt这个文件恢复了。
有人注意到了,恢复文件也是用checkout命令,其实git checkout是用版本库的版本替换本地库的版本,所以不管是修改还是删除,都是可以“一键还原”的
这篇内容就到此了,下篇内容就将会介绍到代码协作及远程代码管理的内容了