Git step by step 7 之git mv

一、基本介绍
git mv 移动或重命名一个文件、目录或软链接
命令格式为
git mv <source> <destination>
git mv <source>... <destination directory>


这里有个待解决的问题:
假设工作目录、暂存区以及本地数据目录中有一个file,我们为file想到了一个更好的名字——newfile,并进行了以下操作
mv file newfile

那么在工作目录中file变成了newfile,暂存区中还为原来的file。这种情况下该如何解决?

目前想到的方法是先
git rm file

目的是不再跟踪这个file,然后再
git add newfile

使得跟踪newfile。
如果不做第一步,只做了第二步,那么在暂存区中会同时有file以及newfile,即git跟踪了file以及newfile,那么进行commit时,它两都会被加入数据目录中。

所以个人觉得,要是进行mv操作时,一定要加上git,即
git mv XXX XXX

以防止遗忘了这个操作,使得版本库中出现冗余的文件或目录。

内容扩展:
这里提到了“跟踪”这个术语,解释一下:
在工作目录中新建一个文件时,它处于未被跟踪状态,一旦执行了git add之后,这个文件即被提交到了暂存区,那么它也就处于了被跟踪状态。
只有被跟踪的文件才能被commit,在进行git commit操作时,所有被跟踪的文件都会被放入本地数据目录。
这句话想强调的是,只有被放入了暂存区的文件才是被跟踪的文件,这些文件才可以被提交到本地数据目录中,那些从暂存区中删除掉了文件即被解除了跟踪,在进行提交时,即使之前的本地数据目录中有那些文件,在提交之后,这些文件将不再存在于本地数据目录中。


more:
man git mv
《pro git》

猜你喜欢

转载自songkang666.iteye.com/blog/1846231
今日推荐