Hello all, A common point of friction when flipping back and forth between branches, especially when dealing with build configurations/artifacts that were sometimes included in the repository and sometimes not (e.g. the artifacts of an `autoreconf` run) is when a file not in the index at all would be overridden by the attempted checkout. e.g. file `:/foo` is currently not in the index in any way, shape, or form (soft or hard) and executing `git checkout bar` would result in a copy of `bar:/foo` being checked out, which leads git to emit the following notice and abort the checkout: > error: The following untracked working tree files would be overwritten by > checkout: > foo When it's a single file like in the example above, it's easy enough to add it to the index, stash your changes, then retry the checkout. But when there are multiple files involved -- perhaps especially in the presence of other untracked files you *don't* want to stash -- it's not as straightforward. I would like to propose two changes extending current git actions to handle such a scenario: 1) `git pull --autostash` (both with and without `--rebase`, the latter of which is currently not a valid option), which would do the equivalent of calling `git add` on each of the files that would be overwritten followed by `git stash`, and 2) Either extending `git pull --force` or introducing something along the lines of `git pull --reset` or similar which would forcibly drop the changes that would be overwritten (e.g. equivalent to extension 1 above followed by `git stash drop`) as an alternative to running `git reset --hard` before attempting to repeat the checkout operation but dropping only changes that explicitly conflict with the requested checkout operation (so somewhat less destructive). (I believe the first proposal should be fairly straightforward and free of controversy, the second might be a little too dramatic or dangerous to be accepted.) With regards to the first extension: as mentioned, it is currently an error to run `git pull --autostash` without `--rebase` as well, but currently even the accepted `git pull --autostash --rebase` does *not* stash changes to files not in the index that would be overwritten by the checkout. Of course there's an incredibly good chance that I'm missing a git action that already does what's requested that I just don't know about -- in which case, please do enlighten me! Thank you for your consideration, Mahmoud Al-Qudsi NeoSmart Technologies