### Godot version

v4.0.2.stable.official [7a0977ce2]

### System information

Windows 10

### Issue description

The settings found in **application/config/project_settings_override** end up being written to the `res://project.godot` every time the editor is started.

I find this inconvenient, `res://project.godot` is always on the changelist in git because of this.

I think it would be better if settings with the same value as found in **application/config/project_settings_override** were persisted in `res://project.godot` **only** when set by the "editor interface" or "by code" and not by the "merge" that happens at the start of the editor.

### Steps to reproduce

1. Before opening the MRP in the editor, note **window/size/mode** value within `res://project.godot`;
2. Now open it in the editor and check the `res://project.godot`, notice that **window/size/mode** was changed by the contents of `res://project_override.cfg` (which is the **application/config/project_settings_override** file).

### Minimal reproduction project

[Projects Override Merging Into Project Godot.zip](https://github.com/godotengine/godot/files/11555239/Projects.Override.Merging.Into.Project.Godot.zip)
set(p_setting, p_value);
}
Variant ProjectSettings::get_setting(const String &p_setting, const Variant &p_default_value) const {
	if (has_setting(p_setting)) {
		return get(p_setting);
	} else {
		return p_default_value;
	}
}
TypedArray<Dictionary> ProjectSettings::get_global_class_list() {
	if (is_global_class_list_loaded) {
		return global_class_list;
	}
	Ref<ConfigFile> cf;
	cf.instantiate();
	if (cf->load(get_global_class_list_path()) == OK) {
		global_class_list = cf->get_value("", "list", Array());
	} else {
#ifndef TOOLS_ENABLED
		
		ERR_PRINT("Could not load global script cache.");
#endif
	}
	
	
	is_global_class_list_loaded = true;
	return global_class_list;
}
String ProjectSettings::get_global_class_list_path() const {