admin管理员组

文章数量:1660121

git add

这个命令将暂存一个文件,前面写过,对于Git文件分类而言,如果一个文件是未追踪的,那么git add就会将文件的状态转化成已追踪的。如果git add作用于一个目录名,那么该目录下的文件和子目录都会递归暂存起来。运行命令,git status可以看到有哪些未追踪文件,接着运行git add把相应文件暂存:

$ git status # 查看未追踪文件
$ git add <filename> # 将文件添加暂存

在Git的对象模型方面,运行git add命令时,每个文件的全部内容都将复制到对象库中,并且按文件的SHA1名来索引。暂存一个文件也可以称作缓存一个文件,或者叫“把文件放进索引”。可以使用git ls-files命令查看隐藏在对象模型下面的东西,并且可以找到那些暂存文件的SHA1值:

$ git ls-files --stage

注意:在文件的任何编辑之后,提交变更之前,请执行git add命令,用最新版本的文件去更新索引。如果不这么做,将会得到两个不同版本的文件:一个是对象库里被捕捉并被索引引用的,另一个则在工作目录下。

git rm

git rm命令是与git add相反的命令。由于删除文件比添加文件问题更多,所以操作会复杂一点。

该命令通过参数控制可以从索引或者同时从索引和工作目录中删除一个文件。从工作目录和索引中删除一个文件,并不会删除该文件在版本库中的历史记录。文件的任何版本,只要是提交到版本库的历史记录的一部分,就会留在对象库里并保存历史记录。

如果引进一个不应该暂存的“意外”文件,下面示例将其删除:

$ echo "some stuff" > oops
$ git add oops   # 添加文件到暂存区,如果不是暂存区文件不能用git rm命令

# 将文件由已暂存转变为未暂存,会删除索引的文件并把文件保留在工作目录中而不删除
$ git rm --cached oops  

# 下面这个命令是间文件从索引和工作目录中都删除
$ git rm oops 

# 下面这个命令会强制来删除文件,即使上次提交后又修改了文件,还是会删除
$ git rm -f oops

如果不小心把工作目录下的文件删除了,可以通过版本控制回复文件的旧版本。

$ git checkout HEAD -- oops

git mv

 git mv命令可以对文件进行移动或者重命名文件。移动或者重命名文件实际上有两种方法,一种方法是先对文件使用git rm命令,然后用git add命令添加新文件,另一种方法是直接使用git mv命令

# 方法一
$ mv oops newoops
$ git rm oops
$ git add newoops

# 方法二
$ git mv oops newoops

无论哪种方法,都会在索引中删除oops的路径名,并添加newoops的路径名,而oops的原始内容则保留在对象库中,然后再将它与newoops重新关联。

本文标签: 重命名版本文件Git