今天晚上又译了一点,对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
这会提示你输入本次修改的注释,完成后就会记录一个新的项目版本。