git - 移除文件以及取消对文件的跟踪

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 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基本操作(获取仓库,git文件的两大状态,跟踪/暂存已修改文件/取消暂存,忽略文件(glob模式介绍,作用范围),提交更新(撤销),移除文件,查看提交历史,撤销修改) git基本操作 -- 获取仓库,git文件的两大状态,跟踪/暂存已修改文件/取消暂存,忽略文件(glob模式介绍,作用范围),提交更新(跳过暂存/撤销),移除文件,查看提交历史(常用选项),撤销修改) 阅读详情

相关推荐

git删除追踪过的文件

git删除追踪的文件

weixin_44071721的博客 433

git取消文件跟踪

取消文件/目录跟踪 取消文件跟踪git rm --cached ${file} 取消目录跟踪git rm --cached -r ${dir} 更新.gitignore文件后,更新跟踪文件的便捷操作: # 移除git项目下所有文件的版本跟踪 git rm --cached -r . # 重新添加git项目下所有文件的版本跟踪(不包含.gitignore指定的忽略文件git add . # 此时,待提交的数据为被移除版本跟踪文件,将其提交即可 git commit -m "refre

baidu_27169523的博客 782

git项目中删除Git追踪

一. Linux 或 macOS 下 cd ${git项目root目录下} # 删除文件夹 rm -rf .git* # .git目录, 连同 .gitignore 文件一起删除 # 推荐方法 find . | grep .git* # 查找匹配项, 并确认它仅包含您要删除的那些文件 find . | grep .git* | xargs rm -rf # 如果满足以上条件,运行此命令 二. Windows 下 cmd 方式登录: cd ${git项目root目录下} .

liuwei0376的专栏 632

git rm

移除文件 要从 Git移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。 如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就

懒人博客 1448

Git取消跟踪文件和目录

git仓库第一次提交的时候,将部分不想跟踪文件(文件夹也是文件的一种),添加到根目录下.gitignore中可以让git跟踪文件;然后add、commit一切都是正常的。 但是当文件和目录已经被提交到仓库中,我想取消跟踪文件和目录可以么,潜意识中我是认为不可以的,甚至于去年还和同事争论过已经加入版本控制的文件再添加到.gitignore中是没有效果的,项目比较感,只是他实现了,我没问

耳鼻草的博客 3318

git 移除文件 && 取消文件跟踪

要从 Git移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。 如果只是简单地从工作目录中手工删除文件,运行git status时就会在 “Changes not staged for commit” 部分(也就是未暂存清单)看到: $ rm grit.gemspec $ git status On branch master Change...

JineD的博客 1万+

GIT 取消移除跟踪已经提交的文件或者目录

【代码】GIT 取消移除跟踪已经提交的文件或者目录。

记录 2425

git 文件没有跟踪

软件版本:   操作系统:ubuntu10.04     内核版本:Linux version 2.6.32-36-generic     git 版本:git version 1.7.0.4 目录:   1. 文件状态   2. 跟踪文件   3. 移除文件   4. 文件移动   5. 忽略文件   6. 文件取消操作     6.1 取消已暂存文件     6.2 取消文件的修改  ...

GoodIdea 9874

在使用git时已经push到远程的文件夹怎么取消跟踪

【代码】在使用git时已经push到远程的文件夹怎么取消跟踪

琅嬛福地 680

如何在 Git取消文件跟踪

如何在 Git取消文件跟踪在使用 Git 进行版本控制时,文件可能最初被跟踪,但随着项目的发展,有时需要取消对这些文件跟踪。本文介绍如何在不同情况下取消文件或目录的 Git 跟踪。1. 取消对已经被 Git 跟踪文件跟踪如果某个文件已经添加到 Git 并被提交,但现在不希望 Git 继续跟踪它,同时保留本地文件...

weixin_40892593的博客 441

git commit 发现pod有大文件如何处理

这个命令不会删除本地 Pods/ 目录,只是让 Git 停止跟踪它。

GY5338的博客 426

git 取消文件跟踪状态

git 取消文件跟踪状态 在使用 git 系统的过程中,可能会遇到失误操作,导致本该排除的文件被提交, 这就需要取消跟踪,并让 gitignore 文件规则生效。 先取消跟踪 该部分操作,在终端中执行 查看要取消跟踪文件 git rm -r -n --cached <文件或目录>...

chengzhibe359483的博客 626

.gitignore文件_git取消文件跟踪

git纠错 git取消文件跟踪在使用git的时候,有些文件是不需要上传的,所以就可以修改 .gitignore 例如:如果是对所有文件取消跟踪的话,就是git rm -r --cached .  //不删除本地文件 git rm -r --f .  //删除本地文件对某个文件取消跟踪git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地。 g...

weixin_39655377的博客 177

git对已经commit的文件取消跟踪

文章目录 在实际开发中,有可能出现有些文件不需要被 git 跟踪但是结果被提交了上去,这个时候如果这些被跟踪文件已经被提交到了 github 或者 gitlab 上去,我们再去 .gitignore 取消跟踪会发现 github 上的文件依然存在,那我们该怎么做呢? git rm -r --cached 文件或者文件夹 这表示将缓存中这个文件删除(本地是会保留的),然后我们再添加 .gitignore 最后 push 上去即可。如果已经率先添加了 .gitignore,直接 push 上去也是可行的

abcnull 的博客 544

git取消跟踪文件目录

git仓库第一次提交的时候,将部分不想跟踪文件(文件夹也是文件的一种),添加到根目录下.gitignore中可以让git跟踪文件;然后add、commit一切都是正常的。 但是当文件和目录已经被提交到仓库中,我想取消跟踪文件和目录可以么,潜意识中我是认为不可以的,甚至于去年还和同事争论过已经加入版本控制的文件再添加到.gitignore中是没有效果的,项目比较感,只是他实现了,我没问是怎么做到的。其实我也完全没说错~至少是已经跟踪文件,再添加的.gitignore中这样是不能使得git跟踪文件的。

marco006的博客 639

git unstage

 https://stackoverflow.com/questions/6919121/why-are-there-2-ways-to-unstage-a-file-in-git git rm --cached &lt;filePath&gt; does not unstage a file, it actually stages the removal of the file(s) fr...

weixin_34257076的博客 802

git-文件操作

git-文件操作 软件版本:  操作系统:ubuntu10.04 内核版本:Linux version 2.6.32-36-generic git 版本:git version 1.7.0.4 目录:   1. 文件状态  2. 跟踪文件  3. 移除文件  4. 文件移动  5. 忽略文件  6. 文件取消操作    6.1 取消已暂存文件    6.2 取消文件的修...

weixin_30271335的博客 116

Git取消文件跟踪

取消对所有文件跟踪git rm -r --cached . // 不删除本地文件 git rm -r --f . // 删除本地文件取消对某个文件跟踪git rm --cached file_name.txt // 删除对file_name.txt的跟踪,但保留本地文件 git rm --f file_na...

weixin_30932215的博客 122
上一篇: git - 查看已暂存和未暂存的更新以及文件修改之后暂存区、上次提交过的不同
下一篇: git - 移动文件
leedaning
博客等级 码龄15年 130粉丝 234原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值