Git 初级读本--上
发布在GIt入门2013年10月22日view:3863
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

enter image description here

git 是一个神奇且功能异常强大的版本控制系统。许多初学者都对它感到很疑惑,因此网上流传着许许多多的教程来帮助人们掌握和理解它。这篇文章的主要目的在于讲述git中的基本概念而不是去和git文档竞争。

“我是一个自负的混蛋,我喜欢以我的名字来给所有的项目命名。首先是Linux,现在则是git”~~ Linus Torvalds

定义

工作目录

  • 工作目录就是你存放内容并且想用git来进行管理的目录

提交

  • 一次提交就是一张你工作目录中内容的完整快照(准确来说应该是所有git跟踪的东西),它由一个40个字符的哈希来进行追踪。以这种方式,你的项目的准确状态可以在任何时候被找到,复制以及重新存储。

索引

  • 所用被认为是待命区域。它是在提交之前发生改变的快照存储地。索引对于git来说至关重要,因为它位于工作目录和你各式各样的提交之间。

分支

  • 分支的概念与其他版本控制系统差不多,但在git中它是一个指向特定提交的指针。当你在一个分支中做一次额外的提交时,这个分支的指针就移动指向最新的一次提交。如果要恢复到代码的之前版本,分支的指针就简单地移动指向分支中的前面的提交。

理解这些组件怎样协同工作,是理解git的关键所在。

git索引

enter image description here

首先,理解git中那个位于提交和工作目录之间那个叫做索引的东西非常重要。基本上来说,他就是一个待命区域,所以当你git add时便将工作目录的快照添加到索引中,当你git commit时便用索引中的东西创建了一次提交。

理解git的中间物(待命区域)特性对于掌握添加和提交内容之间的不同之处,有着相当重要的意义。

git status 对于理解git非常有帮助,因为它展示了工作目录和索引以及上一次提交之间的不同之处。“Status”指的是工作目录的状态,因此如果你对内容做了一些修改--比如说index.php--,然后运行git status,它会显示什么发生了改变以及什么储存在索引中还没有被提交:

enter image description here

git diff和git status有些类似,但是它展示的是不同提交之间的不同,以及工作目录和索引之间的不同。 git diff -cached,展示的则是索引和上一次提交之间的不同。

enter image description here

分支

分支仅仅只是指向不同提交的指针。每一个工程都有一个叫做Master的默认指针。当你继续在默认的分之内进行提交时,Master指针将会跟随你以致于它时时刻刻都指向分之内的最新提交。

使用git branch 命令金额以创建新的分支,相当于创建了一个新的分支标签指向了当前的提交。因此,在发生新的提交之前,先前的和新的分支标签都指向当前的提交。这有点类似于在你的代码库里面进行了一次‘文件-->另存为’。

enter image description here

使用这个模型,我们能够切换回Master分支,做一些变化,然后提交,结果如下所示:

enter image description here

一定要记住“Next Commit”提交只在切换回Master 分支时发生。如果有人使用git branch命令做了一些改变,添加并且提交,提交将会发生在Test branch中,如下所示:

enter image description here

如果所有的分支都被checked out,进行提交将会是下面的情形:

enter image description here

为了开始在一个给定分支中工作,你需要切换到这个分支。这时你需要使用git checkout 命令:

  $ git checkout   

记住当你使用checkout时你将获得一个该分支内指向最新一次提交的的一个副本,它将覆盖你工作目录中的所有内容。


本文译自A git primer,原文地址http://danielmiessler.com/study/git/

翻译文章需要花费大量时间和精力。如果您觉得本文对自己有帮助,请点击下面链接为我提供一些赞助。您的赞助是我继续前进的动力。

评论
发表评论
暂无评论
WRITTEN BY
张小俊128
Intern in Baidu mobile search department。认真工作,努力钻研,期待未来更多可能。
TA的新浪微博
PUBLISHED IN
GIt入门

前端开发中不可缺少的版本控制工具GIt入门

我的收藏