不小心将.gitignore中标记忽略类型的文件提交到了远端仓库,怎么办?

不小心将.gitignore中标记忽略类型的文件提交到了远端仓库,可以试试git命令移除文件。归纳了一下,大概有以下几种情况:

问题分析

问题1:忽略指定类型的文件,或某个指定文件(夹)

问题2:将已经push到github的文件删除(从暂存区移除),但仍希望保留在当前工作目录中 (写.gitignore忽略规则之前就把这个文件夹push了)

问题3:将想要忽略掉的文件的相关记录(如下图) 清理掉(包括保留本地文件和不保留两种情况)

解决方法

问题1 :忽略指定类型的文件 或 某个指定文件(夹)

本地仓库忽略

本地仓库的文件忽略规则可以在 .git/info/exclude 文件中添加. 对当前这个仓库下的所有文件起作用。这些忽略的文件不会提交到共享库中, 因而不会被协作者所共享.。规则如下:

# 忽略所以名字以.o 或.a结尾的文件
*.[oa] 

# 跟踪所有的lib.a,即便在前面忽略了.a文件
!lib.a

# 忽略所有名字以~结尾的文件
*~

# 忽略所有名字以以.exe结尾的文件
*.exe

# 忽略所有以 . 开头的文件
.* 

# 忽略test.cpp这个文件
test.cpp

# 忽略 **根目录** 下的 test 文件夹里面所有的内容
/test/ 

# 忽略当前目录下的test文件夹,而不忽略sudir/test
test/ 

# 忽略任何目录下名字test的文件夹
test/ 

# 忽略test/notes.txt文件,但不忽略test/servers/arch.txt文件
test/*.txt 

# 忽略test/目录及其所有子目录下的.txt文件
test/**/*.txt 

(更多规则可以参考shell的正则表达式)

当前工作目录添加文件忽略

对于每一级工作目录,创建一个.gitignore文件,向该文件中添加要忽略的文件或目录, 规则同上。

全局忽略

不需要在每一个仓库中添加 .gitignore 文件或者修改 exclude文件(毕竟在.git文件里乱动可能项目就没了), 只需要在用户账户文件夹下建立.gitignore_global文件就可以忽略我们想忽略的内容, 步骤如下:

  1. 在git bash下执行命令 git config --global core.excludesfile ~/.gitignore_global, 然后你会发现, ~/.gitconfig 文件里多了一行
    git_config里的变化
  2. 创建 .gitignore_global 文件, 在里面写上规则就好了

问题2 :将已经push到github的文件删除, 但本地的文件不删除

git rm -r --cached .vscode # 将文件夹从暂存区中删除
git commit -m 'delete .vscode config' # 将修改后的暂存区合并到HEAD中
git push origin master # 推到远端


顺便复习一下查看暂存区命令 git ls-files


问题3 :将想要忽略掉的文件的相关记录清理掉

删除暂存区的文件, 同时删除本地的文件

git rm file_name # 删除本地文件, 同时也从暂存区中删除
git commit -m "delete" # 合并到HEAD中
git push origin master

提交删除记录

由于我已经手动将 .exe 文件删除, 所以只需要执行

git add -A
git commit -m "delete"
git push origin master

Reference List:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值