Git 时间,版本控制工具进阶

来源:互联网 发布:南京浦口行知中学 编辑:程序博客网 时间:2024/05/22 08:22

        在上一次的 Git 时间里,我们学习了关于 Git 最基本的用法,包括安装 Git、创建代码仓库,以及提交本地代码。本节中我们将要学习更多的使用技巧,不过在开始之前先要把准备工作做好。

        所谓的准备工作就是要给一个项目创建代码仓库,这里就选择在 ProviderTest 项目中创建吧,打开 Git Bash,进入到这个项目的根目录下面,然后执行 git init 命令,如图 7.7 所示。

图 7.7

        这样准备工作就已经完成了,让我们继续开始 Git 之旅吧。

1.  忽略文件

        代码仓库现在已经是创建好了,接下来我们应该去提交 ProviderTest 项目中的代码。不过在提交之前你也许应该思考一下,是不是所有的文件都需要加入到版本控制当中呢

        在 Android 项目目录结构 中介绍 Android 项目结构的时候有提到过,bin 目录和 gen 目录下的文件都是会自动生成的,我们不应该将这部分文件添加到版本控制当众,否则有可能会对文件的自动生成造成影响,那么如何才能实现这样的效果呢?

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

        现在,我们在 ProviderTest 项目的根目录下创建一个名为 .gitignore 的文件,然后编辑这个文件的内容,如图 7.8 所示。

图 7.8

        这样就表示把 bin 目录和 gen 目录下的所有文件都忽略掉,从而使用得它们不会加入到版本控制当中。

        排除了 bin 和 gen 这两个目录以后,我们就可以提交代码了,先使用 add 命令将所有的文件进行添加,如下所示:

git add .

        然后执行 commit 命令完成提交,如下所示:

git commit -m "First commit."

2.  查看修改内容

        在进行了第一次代码提交之后,我们后面还可能会对项目不断地进行维护,添加新功能等。比较理想的情况是每当完成了一小块功能,就执行一次提交。但是当某个功能牵扯到的代码比较多的时候,有可能写到后面的时候我们就已经忘记前面修改了什么东西了。遇到这种情况时不用担心,Git 全部都帮你记着呢!下面我们就来学习一下,如果使用 Git 来查看自上次提交后文件修改的内容。

        查看文件修改情况的方法非常简单,只需要使用 status 命令就可以了,在项目的根目录下输入如下命令:

git status

        然后 Git 会提示目前项目中没有任何可提交的文件,因为我们刚刚才提交过嘛。现在对 ProviderTest 项目中的代码稍做一下改动,修改 MainActivity 中的代码,如下所示:

public class MainActivity extends Activity {......@Overrideprotected void onCreate(Bundle savedInstanceState) {......addData.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {......values.put("price", 22.85);......}});......}}

        这里仅仅是在添加数据的时候,将书的价格由 55.55 改成了 22.85。然后重新输入 git status 命令,这次结果如图 7.9 所示。

图 7.9

        可以看到,Git 提醒我们 MainActivity.java 这个文件已经发生了更改,那么如何才能看到更改的内容呢?这就需要借助 diff 命令了,用法如下所示:

git diff

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

git diff src/com/example/providertest/MainActivity.java

        命令的执行结果如图 7.10 所示。

图 7.10

        其中,减号代表删除的部分,加号代表添加的部分。从图中我们可以明显地看出,书的价格由 55.85 被修改成了 22.85。

3.  撤销未提交的修改

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

        比如在上一小节中我们修改了 MainActivity 里一本书的价格,现在如果想要撤销这个修改就可以使用 checkout 命令,用法如下所示:

git checkout src/com/example/providertest/MainActivity.java

        执行了这个命令之后,我们对 MainActivity.java 这个文件所做的一切修改就应该都被撤销了。重新运行 git status 命令检查一下,结果如图 7.11 所示。

图 7.11

        可以看到,当前项目中没有任何可提交的文件,说明撤销操作确实是成功了。

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

        首先仍然是将 MainActivity 中那本书的价格改成 22.85,然后输入如下命令:

git add .

        这样就把所有修改的文件都进行了添加,可以输入 git status 来检查一下,结果如图 7.12 所示。

图 7.12

        现在我们再执行一遍 checkout 命令,你会发现 MainActivity 仍然处于添加状态,所修改的内容无法撤销掉。

        这种情况应该怎么办?难道我们还没法后悔了?当然不是,只不过对于已添加的文件我们先对其取消添加,然后才可以撤回提交。取消添加使用的是 reset 命令,用法如下所示:

git reset HEAD src/com/example/providertest/MainActivity.java

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

4.  查看提交记录

        当 ProviderTest 这个项目开发了几个月之后,我们可能已经执行过上百次的提交操作了,这个时候估计你早就已经忘记每次提交都修改了哪些内容。不过没关系,忠实的 Git 一直都帮我们清清楚楚地记录着呢!可以使用 log 命令查看历史提交信息,用法如下所示:

git log

        由于目前我们只执行过一次提交,所以能看到的信息很少,如图 7.13 所示。

图 7.13

        可以看到,每次提交记录都会包含提交 id、提交人、提交日期,以及提交描述这四个信息。那么我们再次将书价修改成 22.85,然后执行一次提交操作,如下所示:

git add .git commit -m "Change price."

        现在重新执行 git log 命令,结果如图 7.14 所示。

图 7.14

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

git log 956e5901096526cafe68d6b5e203821aaedf691 -1

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

git log 956e5901096526cafe68d6b5e203821aaedf691 -1 -p

        查询出的结果如图 7.15 所示,其中减号代表删除的部分,加号代表添加的部分。

图 7.15

        好了,本次的 Git 时间就到这里。

摘自《第一行代码》


0 0
原创粉丝点击