-
-
Save nicktoumpelis/11214362 to your computer and use it in GitHub Desktop.
git clean -xfd | |
git submodule foreach --recursive git clean -xfd | |
git reset --hard | |
git submodule foreach --recursive git reset --hard | |
git submodule update --init --recursive |
git reset --hard --recurse-submodule
use this (see above)
git config --global alias.rinse '!git reset --hard --recurse-submodule && git submodule sync --recursive && git submodule update --init --force --recursive && git clean -ffdx && git submodule foreach --recursive git clean -ffdx'
git restore
@sambacha can you elaborate on why you added git restore
? What's the use-case?
```shell git restore@sambacha can you elaborate on why you added git restore? What's the use-case?
It resets the submodules back
git restore . --recurse-submodules
It resets the submodules back
Does it also take care of the git reset --hard --recurse-submodules
to discard any changes in the working trees? If so, why do the git restore
last and not first?
The key for me was git submodule sync
. Thank you @larsbrinkhoff @yuzhichang!
It's a sneaky issue whenever the URLs specified in .gitmodules
get updated, but the old URLs continue to silently be used (as shown by git submodule foreach --recursive git remote get-url origin
). Git should honestly warn us whenever the two are different.
Maybe
git submodule sync
?
For anyone coming new to all these commands, I believe this suggestion is 'as well', not 'instead' (see later comments for what this adds).
git config --global alias.rinse '!git submodule foreach --recursive git clean -xfd && git submodule sync --recursive && git restore . --recurse-submodules'