idea让我迷惑的操作
最近遇到了一个神奇的bug,idea添加文件会问你要不要添加到git仓库,如果你不添加,这个是一个颜色是忽略的颜色。但是我又想添加进去了,这个时候你单独添加一个文件是可以的,但是右键添加整个文件夹却不行,接下来先说我的问题的解决:
原理:idea你不添加到git里面会默认往 .git/info/exclude
文件里面写入一个记录,类似这样的,这就解释了我们add时候为什么不能一起add,因为他添加记录的时候是一条一条添加的。因此找到这个文件,把里面的内容删了就可以一起添加了。
ps:我当时迷惑了好久,为什么.gitignore里面没有这个忽略的记录,原来被idea这小子写到这里面去了
补充.gitignore还可能出现的问题
- 就是全局.gitignore文件可能被忽视, 一些IDE可能会往这里写东西,使用下面这个命令查看全局git忽略文件(注意默认是gitignore_global,也可以设置其他名称)
git config --get core.excludesfile
- 还有项目顶层目录可能也会影响文件忽略,这个就是一个项目有多个.gitignore文件,细心一点排查即可,我写了个py脚本,可以搜索
import os
# 查询所有包含指定字符串的文件
def search_files(root_directory, search_content, search_filename):
matches = []
for root, dirs, files in os.walk(root_directory):
for file in files:
if search_filename != "" and file == search_filename:
file_path = os.path.join(root, file)
try:
with open(file_path, 'r', encoding='utf-8') as f:
if search_content in f.read():
matches.append(file_path)
except (IOError, UnicodeDecodeError):
continue
else:
file_path = os.path.join(root, file)
try:
with open(file_path, 'r', encoding='utf-8') as f:
if search_content in f.read():
matches.append(file_path)
except (IOError, UnicodeDecodeError):
continue
return matches
if __name__ == "__main__":
root_directory = "D:\\" # 查询的根路径,C|D|E盘
search_content = "ischool-search" # 查询的内容
search_filename = "" # 查询的文件名,没有传空即可(全盘扫估计得好久)
matching_files = search_files(root_directory, search_content, search_filename)
if matching_files:
print("匹配项找到在以下文件中:")
for match in matching_files:
print(match)
else:
print("未找到匹配项。")
总结来说:git三个地方可以配置忽略
- .gitignore文件
- 项目目录下:.git/info/exclude
- git全局配置文件
文章评论