导航

《看日记学git》系列教程(四)

Posted on 2017-08-18 22:50  Young哥哥  阅读(53)  评论(0)    收藏  举报

这次我们来研究“改进代码之后怎么提交给git”。

还记得在之三中我们项目的main.c吧,其中的内容其实就是一个helloworld:

[root@wupengchong rocrocket]# cat -n main.c

1 #include<stdio.h>

2 int main()

3 {

4 printf(”hello world!\n”);

5 return 0;

6 }

这个时候,我来对main.c进行一些修改,在printf语句前加入一行:

printf(”Version: 0.01\n”);

于是程序变成了这样:

[root@wupengchong rocrocket]# cat -n main.c

1 #include<stdio.h>

2 int main()

3 {

4 printf(”Version: 0.01\n”);

5 printf(”hello world!\n”);

6 return 0;

7 }

接下来的两道工序主要是由开发者最后确认一下“自己的修改”:

[root@wupengchong 

rocrocket]# git diff –cached

[root@wupengchong rocrocket]#

这个git diff –cached是用来查看index file和仓库之间代码的区别的。由于我们目前只是在working tree里做了修改,还没有报告给index file,所以使用此命令显然会输出空信息。

而如果省略–cached选项的话,就是比较working tree和index file的区别,由于我们的确在working tree里做了修改,所以使用git diff后会输出修改信息。(可能有些读者不知道working tree是什么意思,其实很简单,通俗的说,它就是你的源代码文件,在这个例子里也就是main.c文件喽)

[root@wupengchong

 rocrocket]# git diff

diff –git a/main.c b/main.c

index 3a88d8c..e0fe92e 100644

— a/main.c

+++ b/main.c

@@ -1,6 +1,7 @@

#include<stdio.h>

int main()

{

+printf(”Version: 0.01\n”);

printf(”hello world!\n”);

return 0;

}

(至于git diff的输出内容我们现在不必研究太深,只要知道这些信息表示的是修改后和修改前的不同之处就可以了)

使用git diff了解了不同之后,还可以使用git status命令来获取整体改动的信息:

[root@wupengchong 

rocrocket]# git status

# On branch master

# Changed but not updated:

# (use “git add <file>…” to u

pdate what will be committed)

#

# modified: main.c

#

no changes added to commit (use

 “git add” and/or “git commit -a”)

可以看到提示信息“changed but not updated”,就是说git发现你有已经修改了但还未git add的内容。

如果git提示说“Changes to be committed”,那就是表明git发现了你已经git add但还未git commit的内容。

如果git提示说“Untracked files”,那么就是你增加了新文件或者在某个子目录下增加了新文件。

下面该进入提交阶段了。首先运行

[root@wupengchong 

rocrocket]# git add main.c

这句是要告诉git,我已经修改了main.c文件,你(指git)去检查一下。当然,如果你新增加了一个文件,比如

new.c,也需要在这里先执行git add new.c告诉git。

提交我的工作:

[root@wupengchong 

rocrocket]# git commit

Created commit ecf78d1: 

This is the second version.

1 files changed, 

1 insertions(+), 0 deletions(-)

至此,我的修改工作完成了,而且也顺利地提交给了git。还是不放心?来查查:

[root@wupengchong 

rocrocket]# git log

commit ecf78d1b3603d0f5015e8b14bee69870db6459e1

Author: 

rocrocket <wupengchong@gmail.com>

Date: 

Thu Sep 18 15:39:47 2008 +0800

This is the second version.

Version 0.02

commit 3b1e328ad80caebe7fe2f4229e247d2ebe669cd8

Author: 

rocrocket <wupengchong@gmail.com>

Date: 

Thu Sep 18 15:32:53 2008 +0800

This is the first git project.

At 20080916

用git log可以查看开发日志!看到黑体字了吧,Version0.02就是我刚才在git commit时输入的新信息。这已经是我们

项目的第二个开发版本了。(成就感油然而生)

总结一下

如果修改了项目代码,先git add你修改过的文件,再git diff并git status查看确认,然后git commit提交,然后输入

你的开发日志,最后git log再次确认。

现在教给你一个偷懒方法,那就是git commit -a,这个命令可以直接提交所有修改,省去了你git add和git diff和gitcommit的工序,可谓一条龙服务。

但是,此处有一点应该注意,那就是git commit -a无法把新增文件或文件夹加入进来,所以,如果你新增了文件或文件夹,那么就要老老实实的先git add .,再git commit喽。

对了,针对开发日志,要说一句:切记写开发日志的时候,第一行一定要是少于50字的开发概括信息,而且第二行务必是空行,第三行开始才可以开始细致描述开发信息。

这是因为很多版本服务系统中的email机制都会选取log中的第一行

为邮件题目。(你应该明白了吧:))

ps:我可能在此前也没有太注意关于日志写法的问题,今后也要避免错误:)