Git快速入门(Q&A)

2010年9月26日 由 edsionte 留言 »

如果你对于git完全不知,那么不用着急,我们一起来从零开始学习。

1.难道git就是傻瓜的意思吗?

git是一个版本控制系统,也叫做傻瓜内容跟踪器。按照我目前的理解是:一个项目团队共同完一个项目,而且团队里的每个人都深处异地,那么如何将每个人负责的代码融合在一起?而且如何清晰的展现不同的人在不同的地方在不同的时间里对代码做过修改?这时候,git派上用场了。

事实上,Linux内核正是使用git进行管理的,而git的创始人也正是linux之父:Linus Torvalds。

2.我如何才能获得git?

想使用git,肯定必须安装git了。如果你在ubuntu下,使用下面的命令可以快速安装:sudo apt-get install git-core。安装完成后,可使用git –version查看git的版本号。

3.我在安装完git后该做些什么?

首先你得向git介绍你自己,告诉它你的姓名和邮箱吧。

git config --global user.name "edsionte"
git config --global user.email "edsionte@gmail.com"

4.我依然可以通过男人手册获得git的帮助吗?

当然可以,男人手册是强大的。比如我们可以通过下面的命令获得git中commit命令的相关帮助。

man git-commit

5.我如何开启一个新的管理项目?

比如你要管理的项目目录为mywork,该目录下有一个文件hello.c.进入到该目录,通过git init命令就可以创建一个版本库。hello.c的内容如下:

edsionte@edsionte-desktop:~/mywork$ cat hello.c
#include “stdio.h”

int main()
{
	printf("hello,git!\n");
	printf("I can use git!\n");
	return 0;
}

6.如何将我的文件加入到版本库?

比如我要将hello.c文件加入到我的版本库,那么我可以这样:

git add hello.c
git commit

第一条命令只是将hello.c文件增加到版本库的索引当中,而第二条命令才真正的将hello.c文件的内容提交到版本库中,并且当你执行第二条命令的时候会在终端出现新的界面,在这个界面中你可以输入与该文件相关的开发日志等,比如我们输入“The version is: 0.0.1”。注意,要在这个界面下进行相关操作必须以ctrl组合相应的字母。

事实上第二条命令我们可以这样处理:

git commit -m "The version is: 0.0.1"

即直接在命令中输入开发日志信息。

每当你改进原有文件的代码时,你都可以按照上面的指令将更新后的内容添加到版本库中。不过,当我们只是更新了原有文件的内容而不是新增文件或者目录时,就可以用下面的命令代替以上工作:

git commit -a

7.在我对某个(些)文件进行了修改之后,我如何查看新旧文件的差异?

这是一个好问题。不过在回答这个问题之前,请先回顾如何将一个文件更新到版本库:先修改文件,再add,再commit。OK,那么接下来的几个指令的使用时间就很清晰了。

在add之前,可以使用git diff命令来查看文件被更新前后的差异。

在coomit之前,可以使用git diff –cached命令来查看文件被更新前后的差异。

以上命令可以查看文件内容的具体差异。那么在coomit之前,如何查看那些文件被修改过?git status即可做到。

8.既然我记录了开发日志,那么我如何查看它?

git log

9.什么是分支?分支有何用?

以上我们的操作均是在主分支master中进行的。有时候我们需要创建一个个人分支,以避免对主分支的影响;有时候我们需要一个临时性的分支去完成一些实验性的工作;当出现以上情况时,我们就需要创建一个分支。

10.如何创建一个分支?对于这个分支我能做些什么?

如果我想创建temp分支,那么可以通过git branch temp来完成。 通过git branch命令可以查看所以分支,比如:

edsionte@edsionte-desktop:~/mywork$ git branch
* master
  slave
  temp

而且*标志表示当前你所在的分支。如果你想进入temp分支,那么通过git checkout temp命令完成。接下来你再temp分支中创建新文件或者修改原有文件都不会影响主分支。

11.到目前为止,我认为temp分支完全正确,那么如何将它合并到主分支?

在这之前你要确认一下temp分支和master分支中现在存在那些文件。在master分支中有一个hello.c文件。在temp分支中当然也存在hello.c文件,不过被修改成如下内容:

edsionte@edsionte-desktop:~/mywork$ cat hello.c
#include “stdio.h”

int main()
{
	printf("hello,git!\n");
	printf("I can use git!\n");
	printf("I love git!\n");
	return 0;
}

此外,在temp分支中还新建了hi.c文件。使用git commit -a命令向版本库中提交了hello.c文件后,还必须add和commit来提交新建的hi.c文件,完成后切换到master分支。接着使用git merge temp命令就可将temp分支合并到主分支了。查看hello.c文件,是不是已经更新了?而且还新增了hi.c文件。

edsionte@edsionte-desktop:~/mywork$ git merge temp
Merge made by recursive.
 hello.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

12.虽然你说的很轻松,可是我在试验的时候还是出现了诸如下面的错误,这是怎么回事?

edsionte@edsionte-desktop:~/mywork$ git merge temp
Auto-merging hello.c
CONFLICT (content): Merge conflict in hello.c
Automatic merge failed; fix conflicts and then commit the result.

如果出现这样的情况,我们可以看一下master分支下的hello.c文件:

edsionte@edsionte-desktop:~/mywork$ cat hello.c
#include “stdio.h”

int main()
{
	printf("hello,git!\n");
<<<<<<< HEAD ======= 	printf("I can use git!\n"); >>>>>>> temp
	return 0;
}

“====”符号是出现混淆内容的分割线。“<<<<<<< HEAD”与”====”之间的语句段为空,而”====”与“>>>>>>> temp”之间的语句段为printf(“I can use git!\n”);。出现这种情况是因为git不能辨别这两段语句的前后关系,这时候需要我们人为来调整分支文件的内容再合并。

13.接下来我还能做些什么?

以上的内容只是git的简单入门教程,更多的内容可以参考git男人手册

广告位

5 条评论

  1. jiawei说道:

    From your article I can learn how to use git. If you want to know more about git, you should study its manual. I can give you a link. http://www.kernel.org/pub/software/scm/git/docs/

    I have clicked your advertisements so that you can get a little money.

    [回复一下]

    edsionte 回复:

    @jiawei, thks,harry.thks for your “click”

    [回复一下]

  2. jiawei说道:

    “事实上,Linux内核正是使用git进行管理的,而git的创始人也正是linux之父:Linus Trovalds。”

    Git is made by Linus Torvalds, not Linus Trovalds. >_<.

    [回复一下]

    edsionte 回复:

    @jiawei, i am foolish for that mistake

    [回复一下]

  3. 任镇说道:

    以上的内容只是git的简单入门教程,更多的内容可以参考git男人手册。

    别字“男人手册”哈哈

    [回复一下]

发表回复

windows 7 ultimate product key

windows 7 ultimate product key

winrar download free

winrar download free

winzip registration code

winzip registration code

winzip free download

winzip free download

winzip activation code

winzip activation code

windows 7 key generator

windows 7 key generator

winzip freeware

winzip freeware

winzip free download full version

winzip free download full version

free winrar download

free winrar download

free winrar

free winrar

windows 7 crack

windows 7 crack

windows xp product key

windows xp product key

windows 7 activation crack

windows7 activation crack

free winzip

free winzip

winrar free download

winrar free download

winrar free

winrar free

download winrar free

download winrar free

windows 7 product key

windows 7 product key