emai= xxx@kuxun.cn
现在已经创建好了一个 git 版本库,但是它是空的,还不能做任何事情,下
一步就是怎么向版本库中添加文件了。如果希望忽略某些文件,需要在 git 库根
目录下添加. gitignore 文件。
2.2 一条重要的命令 -- git-update-index
在介绍如何向 git 库中添加文件前,不得不先介绍 git-update-index 命
令。这条命令可能会使很多熟悉 CVS 的用户疑惑, 一般来说,我们向一个源代
码管理库提交代码的更改,都会抽象为以下的动作:更改文件;向源码管理系统
标识变化;提交。比如从一个 CVS 库里删除一个文件, 需要先删除文件,然后 cvs
delete; 最后 cvs commit。
因此, git-update-index 就是向源码管理系统标识文件变化的一个抽象操作。
说的简要一些,git-update-index 命令就是通知 git 库 有文件的状态发生了变
化(新添、修改、删除等待)。这条命令在早期的 git 版本中是非常常用的。
在新的 git 版本(1.5 版本及以后)已经被其它命令包装起来,并且不推荐使用
了。
git-update-index 最常用的方式有以下两种,更多功能请 man
git-update-index。
方法一:git-update-index --add 文件名列表。 如果文件存在,则这条命令是
向 git 库标识该文件发生过变化(无论是否该文件确实被修改过),如果文件不
存在,则这条命令是向 git 库表示需要加入一个新文件。�
方法二: git-update-index --force-remove 文件名列表。 这表示向 git 库表
示哟啊从库中删除文件。无论该文件是否已经被删除,这条命令仅仅是通知 git
库要从库中删除这些文件。这些文件都不会受影响。�
因此,git-update-index 仅仅是向 git 库起到一个通知和标识的作用,
并不会操作具体的文件。
2.3 向 git 库中添加或删除文件 – git-add、git-rm
其实,说使用 git-add 命令向 git 库里添加文件是不对的, 或者说至少
是不全面的。git-add 命令的本质是命令"git-update-index --add” 的一个包
装。因此,git-add 除了可以添加文件,还可以标识文件修改。在调用了 git-add
后,才可以做 commit 操作。git-rm 也是一样, 它是 git-update-index
--force-remove 的一个包装。
对于 git-add 来说, 如果在一个目录下调用了 git-add * ,则默认是递
归将子目录中所有文件都 add 到 git 库中。对于 git-rm 来说,也是一样。 这点
和 CVS 有较大区别。
此外,我们还可以通过命令 git-ls-files 来查看当前的 git 库中有那些
文件。
2.4 查看版本库状态—git-status
通过该命令,我们可以查看版本库的状态。可以得知那些文件发生了变
化,那些文件还没有添加到 git 库中等等。 建议每次 commit 前都要通过该命令
确认库状态。以避免误操作。
其总,最常见的误操作是, 修改了一个文件, 没有调用 git-add 通知
git 库该文件已经发生了变化就直接调用 commit 操作, 从而导致该文件并没有
真正的提交。如果这时如果开发者以为已经提交了该文件,就继续修改甚至删除