从一个未被纳入版本控制的项目开始

你现在正在着手在一个项目开发上,但是它还未被纳入版本控制系统的管理中,那就让我们从这个项目开始吧!在命令行界面中跳转到这个项目的根目录(root folder),然后键入 “git init” 命令来建立一个 Git 项目:

$ cd path/to/project/folder
$ git init

现在我们来看看在这个目录下都有哪些文件(也包括所有的隐藏文件):

$ ls -la

你将会看到其中有一个新建的并且名字为 “.git” 的隐藏目录。为什么有这么一个新的目录呢?其实这是 Git 给我们创建的一个空的本地仓库(local repository)。为什么是 “空” 呢?开始时 Git 并不会自动地把当前项目中的所有的内容当作 “初始版本(initial version)” 添加到本地仓库中的,因此现在这个本地仓库还不包含任何你的项目文件。

名词解释

工作副本(Working Copy)

项目的根目录我们通常称之为 “工作副本” 或者叫做 “工作目录(working directory)”。这个文件夹包括项目所有的内容并且存放在你的本地计算机中。

你需要经常的询问版本控制系统来同步你的工作副本。一定要记住,在你的本地计算机中只存在唯一一个和项目版本所对应的工作副本,多重并行的工作副本是不被允许的。

忽略文件

通常情况下在很多项目或者开发平台中都会有一些你并不想要纳入版本控制系统的文件,例如在 Mac OS 中,哪些 “.DS_Store” 文件,它并不需要纳入版本控制中去。在其他的项目里,通常也会存在一些编译文件和临时的缓存文件。把它们纳入版本控制系统中其实是毫无意义的。因此当你使用版本控制时,你就必须决定哪些项目文件需要被纳入版本控制系统中,而哪些不需要。

概念

哪些文件不需要纳入版本控制中?

哪些文件需要被忽略呢?一个最简单分辨方法就是,那些在你开发项目过程中自动生成的文件。例如,临时文件,日志和缓存文件等等。

还有其他的例子,比如那些为编译代码所提供的密码或者个人设置文件。

下面这个连接:github.com/github/gitignore 可以帮助你更好地了解在不同的项目和开发平台上哪些内容不需要纳入版本控制中去。

忽略文件列表被存放在项目根目录中一个被称之为 “.gitignore” 的文件中。在这里强烈的建议你,在做第一次提交之前,首先应该定义好这个忽略文件列表。因为一旦这些文件被提交了,要想再次把它们清除出版本控制系统就很麻烦。

现在,让我们使用你最常用的编辑器来建立一个空的文件,命名为“.gitignore”,然后保存在项目的根目录下。如果你是在 Mac OS 中,你就可以直接在这个文件中加上如下的内容:

.DS_Store

如果还想忽略其它文件,很简单,在文件中为每一个需要忽略的内容添加一行。你也可以定义一个非常复杂的规则。 为了简单起见,在这个理列出一些在你定义忽略文件时最经常用到的例子:

  • 忽略一个特定的文件:给出从项目根目录开始的路径和文件名,例如:path/to/file.ext 。
  • 忽略项目下所有这个名字的文件:只要给出文件的全名,不要包括任何路径,例如 filename.ext 。
  • 忽略项目下所有这个类型的文件:例如 *.ext 。
  • 忽略一个特定目录下的所用文件:例如 path/to/folder/* 。

完成你的第一次提交

当你定义好了你的忽略规则后,现在是时间来为你的项目进行第一次提交了。在本书之后的章节里我们将继续深入细致地探讨提交的工作原理和详细流程。就现在而言,只须要执行如下的命令就可以了:

$ git add -A
$ git commit -m "Initial commit"

Get our popular Git Cheat Sheet for free!

About Us

As the makers of Tower, the best Git client for Mac and Windows, we help over 100,000 users in companies like Apple, Google, Amazon, Twitter, and Ebay get the most out of Git.

Just like with Tower, our mission with this platform is to help people become better professionals.

That's why we provide our guides, videos, and cheat sheets (about version control with Git and lots of other topics) for free.