你可能不了解的Git命令:git rm

1,089 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

最近在项目中遇到了一个问题:我在提交代码到Gitlab时,将一些没有必要提交的文件提交到了远程分支。刚开始我以为是我的.gitignore没有过滤掉需要忽略的文件。后来发现并非如此,由于我司某项目分为pc端和移动端 虽然我们两端的项目在一个gitlab地址 但是项目的配置也是各自配置的。(这锅我不背)

后面我将.gitignore文件重新添加了文件过滤 虽说.gitignore文件处理好了,但是远程分支中那些不必要的文件还是存在,于是就用上了很少使用的git命令-git rm

git 区间概念

  • 工作区(Working Directory):代码编辑的区域。
  • 暂存区(Stage/Index):代码改变并暂时提交到本地分支的区域。
  • 分支区(commit History):存放已经提交的数据。

git rm 删除工作区文件

git rm file_path 命令 删除工作区的文件

rm 后面接文件或者文件夹的地址

item.png

如上图所示 该项目中有一个名为test.txt 该文件现在已经在工作区此时我们执行命令来删除掉它

git rm test.txt

error.png

输入git rm 命令后 发现报错了 意思是 这个跟踪文件已经改变到暂存区。 后面括号里面说 叫我们 使用 --cached 来保持工作区的文件 或者说 用 -f来强制删除该文件 这就是我们后面说的 如果要在暂存区删除代码 前提时 你所要删除的文件是没有被改变过的 就是和当前版本库的文件内容一样 才可以删除

如果你非要强制删除 那么 如他所说 在 指令后面加上-f就可以进行强制删除了

此时我们进行强制删除

code.png

删除完之后我们就发现 在你项目中的 test.txt已经删除掉了。

到此我们已经删除掉了工作区的无用文件

删除远程分支文件

如下图 .idea文件是编译器的配置文件 对于项目来说是无效的 但是我们又提交到了 gitlab 此时我们将.idea文件进行删除

files.png

输入命令 git rm file_path -f 该命令意思是 强制删除git分支区文件

file_path 支持模糊匹配 即 假设 idea文件夹下有多个 xml的文件

那么我们可以 输入git rm -f .idea/*.xml 将删除idea文件下所有的xml文件

我们执行命令git rm -f .idea在工作区的文件就会被删除掉了

此时 我们可以使用 git status 查看文件变化

git_delete.png

我们可以看到 git里的文件发生了变化 我们只是在暂存区删除掉了并没有提交到远程分支 输入命令

//提交修改后的代码
git commit -m 'delete idea files'
//将代码上传到远程分支test
git push origin test

然后可以看到在gitlab界面 .idea文件夹已经不存在了 至此我们已经删除掉了远程分支中的不必要文件

删除分支区文件但不删除工作区文件

git rm -f --cached file_path

我们输入命令时只需要加上 --cached 就能删除掉远程分支区的文件而保留工作区。

最后

感谢您观看此篇博客,如果对您有帮助,希望能给个👍评论收藏三连!