Git Community Book通译 (五)

Git Community Book翻译 (五)

今天晚上又译了一点,对Git的索引的理解有所加深。

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

第三章

基本用法

获得一个GIT仓库

既然我们现在把一切都设置好了,我们需要一个Git仓库。有两种方法:一种是从已有的GIT仓库中clone(克隆,复制);还有一种是新建一个仓库,把未进行版本控制的文件进行版本控制。

 

Clone一个仓库

为了得一个项目的拷贝(copy),我们需要知道这个项目的地址(Git URL). Git能在许多协议下使用,所以Git url可能以ssh://, http(s)://, git://,或是只是以一个用户名(git 会认为这是一个ssh 地址)为前辍。有些仓库可以通过不同的协议来访问,例如,Git本身的源代码你可以用 git:// 协议来访问:

git clone git://git.kernel.org/pub/scm/git/git.git

也可以通过http 协议来访问

git clone http://www.kernel.org/pub/scm/git/git.git

git://协议较为快速和有效,但是有时必须使用http协议,比如你公司的防火墙阻止了你的非http访问请求。你执行了上面两行命令中的任意一个,你会看到一个新目录:”git”,它包含有所的Git源代码和历史记录。

 

在默认情况下,Git will name the new directory it has checked out your cloned code into after whatever comes directly before the '.git' in the path of the cloned project.

例如:git clone http://git.kernel.org/linux/kernel/git/torvalds/linux-2.6.git 会建立一个目录叫'linux-2.6'

 

 

初始化一个新的仓库(Repository)

现在假设有一个叫”project.tar.gz”的压缩文件里包含了你的一些文件,你可以用下面的命令让它置版本控制的管理之下。

$ tar xzf project.tar.gz

$ cd project

$ git init

Git会输出:

Initialized empty Git repository in .git/

如果你仔细观查会发现project目录下会有一个名叫”.git” 的目录被创建,这意味着一个仓库被初始化了。

 

正常的工作流程(Normal workflow)

修改文件,将它们更新的内容添加到索引上。

$ git add file1 file2 file3

你现在为commit做好了准备,你可以看看哪些文件将被提交(commit), 使用git diff命令再加上 –cached 参数。

$ git diff --cached

(如果没有—cached参数,git diff 会显示你所有已做的但没有加入到索引里的修改)

你也可以用git status命令来获得当前项目的一个状态:

$ git status

# On branch master

# Changes to be committed:

# (use "git reset HEAD <file>..." to unstage)

#

# modified: file1

# modified: file2

# modified: file3

#

如果你要做进一步的修改,那就继续做,做完后就把新修改的文件加入到索引中。最后把他们提交:

$ git commit

这会提示你输入本次修改的注释,完成后就会记录一个新的项目版本。