From aa7a997a9761050816011eabcca225b2a8f35b6e Mon Sep 17 00:00:00 2001 From: Jieyou Xu Date: Mon, 2 Dec 2024 12:36:48 +0800 Subject: [PATCH] Explain how to deal with exploded git submodules --- src/git.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/git.md b/src/git.md index 90dbc3fb1..75e9d1f04 100644 --- a/src/git.md +++ b/src/git.md @@ -597,6 +597,27 @@ $ git submodule foreach git reset --hard and then try `git submodule update` again. +Unfortunately sometimes your local git submodules configuration can become +completely messed up for some reason. + +### Overcoming `fatal: not a git repository: /../../.git/modules/` + +Sometimes, for some forsaken reason, you might run into + +```text +fatal: not a git repository: src/gcc/../../.git/modules/src/gcc +``` + +In this situation, for the given submodule path, i.e. ` = +src/gcc` in this example, you need to: + +1. `rm -rf /.git` +2. `rm -rf .git/modules//config` +3. `rm -rf .gitconfig.lock` if somehow the `.gitconfig` lock is orphaned. + +Then do something like `./x fmt` to have bootstrap manage the submodule +checkouts for you. + ## Ignoring commits during `git blame` Some commits contain large reformatting changes that don't otherwise change functionality. They can