git - 移除文件以及取消对文件的跟踪
2015-04-10 10:44
381 查看
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用
如果只是简单地从工作目录中手工删除文件,运行
然后再运行
最后提交的时候,该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项
force 的首字母),以防误删除文件后丢失修改的内容。
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆
后面可以列出文件或者目录的名字,也可以使用 glob 模式。比方说:
注意到星号
Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开(译注:实际上不加反斜杠也可以运行,只不过按照 shell 扩展的话,仅仅删除指定目录下的文件而不会递归匹配。上面的例子本来就指定了目录,所以效果等同,但下面的例子就会用递归方式匹配,所以必须加反斜杠。)。此命令删除所有
会递归删除当前目录及其子目录中所有
取消对文件的跟踪还有一个命令:git update-index --assume-unchanged <取消跟踪的文件>
注:该命令只能取消提交到暂存区之前的文件,可以先用git reset <文件名>将暂存区的文件回退到暂存区之前,然后再取消跟踪。
git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
如果只是简单地从工作目录中手工删除文件,运行
git status时就会在 “Changes not staged for commit” 部分(也就是未暂存清单)看到:
$ rm grit.gemspec $ git status On branch master Changes not staged for commit: (use "git add/rm <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) deleted: grit.gemspec no changes added to commit (use "git add" and/or "git commit -a")
然后再运行
git rm记录此次移除文件的操作:
$ git rm grit.gemspec rm 'grit.gemspec' $ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) deleted: grit.gemspec
最后提交的时候,该文件就不再纳入版本管理了。如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项
-f(译注:即
force 的首字母),以防误删除文件后丢失修改的内容。
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。换句话说,仅是从跟踪清单中删除。比如一些大型日志文件或者一堆
.a编译文件,不小心纳入仓库后,要移除跟踪但不删除文件,以便稍后在
.gitignore文件中补上,用
--cached选项即可:
$ git rm --cached readme.txt
后面可以列出文件或者目录的名字,也可以使用 glob 模式。比方说:
$ git rm log/\*.log
注意到星号
*之前的反斜杠
\,因为
Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开(译注:实际上不加反斜杠也可以运行,只不过按照 shell 扩展的话,仅仅删除指定目录下的文件而不会递归匹配。上面的例子本来就指定了目录,所以效果等同,但下面的例子就会用递归方式匹配,所以必须加反斜杠。)。此命令删除所有
log/目录下扩展名为
.log的文件。类似的比如:
$ git rm \*~
会递归删除当前目录及其子目录中所有
~结尾的文件。
取消对文件的跟踪还有一个命令:git update-index --assume-unchanged <取消跟踪的文件>
注:该命令只能取消提交到暂存区之前的文件,可以先用git reset <文件名>将暂存区的文件回退到暂存区之前,然后再取消跟踪。
相关文章推荐
- git的文件状态以及git diff结果分析 (staged已暂存的,unstaged取消暂存的)
- Git利用.gitignore不跟踪某些文件(以及不生效的解决办法)
- Git 取消跟踪已版本控制的文件
- git 取消/添加 某文件的跟踪
- Git 取消跟踪已版本控制的文件(亲测可行)
- Git——跟踪或取消跟踪文件
- git移除未被跟踪的文件
- Git 取消跟踪已版本控制的文件
- git 移除文件跟踪
- git取消跟踪文件
- git之取消文件跟踪
- git取消文件跟踪
- git取消文件跟踪
- git取消跟踪文件目录
- git取消跟踪文件
- git 取消跟踪 但是不删除文件
- Git 取消跟踪已版本控制的文件
- git取消文件跟踪
- Git回退取消文件的跟踪
- git取消跟踪已版本控制的文件