Hi Felipe, Your recent clean-up of 'git pull --autostash' seems to unfortunately have made things worse if the pull brings new files that conflict with existing untracked files, which makes the pull abort, and there are tracked files with modifications (so --autostash comes into play). Before your change, 'git pull --no-rebase --autostash' did *not* apply the autostash after the pull failed, thus loosing modifications to tracked files (and it did not save the stash entry !). 'git pull --rebase --autostash' correctly applied the autostash, but ended with a strange "error: could not detach HEAD". After your change, both 'git pull --no-rebase --autostash' and 'git pull --rebase --autostash' have the same buggy behaviour: they do not apply the autostash and do not save it in the stash list. I had already documented the old behaviour at [1]. Here, I copy my reproducer script (save it as "script"): ~~~bash #!/bin/sh # usage: ./script <'git pull' arguments> set -x rm -rf test rm -rf clone # Create origin repo git init test ( cd test date>>file git add file git commit -m "add file" ) # Clone git clone test clone # Create new file in origin ( cd test date>>other git add other git commit -m "add other" ) # Create the same file in clone (untracked) ( cd clone date>>other # If testing '--autostash', add some modifications to 'file' if [[ "$@" =~ "--autostash" ]]; then date>>file fi # status before pull git status # Try to pull git pull "$@" # status after pull git status # see if the stash was saved git stash list ) ~~~ Here are the buggy results : ** ./script --no-rebase --autostash ** ~~~ + git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: file Untracked files: (use "git add <file>..." to include in what will be committed) other no changes added to commit (use "git add" and/or "git commit -a") + git pull --no-rebase --autostash remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 283 bytes | 94.00 KiB/s, done. From /Users/Philippe/Code/GIT-devel/BUGS/ggg-759-pull-autotash-untracked/test 4ebab2f..fc7a169 master -> origin/master Updating 4ebab2f..fc7a169 Created autostash: cfd51b5 error: The following untracked working tree files would be overwritten by merge: other Please move or remove them before you merge. Aborting + git status On branch master Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) Untracked files: (use "git add <file>..." to include in what will be committed) other nothing added to commit but untracked files present (use "git add" to track) + git stash list # empty! ~~~ ** ./script --rebase --autostash ** ~~~ + git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: file Untracked files: (use "git add <file>..." to include in what will be committed) other no changes added to commit (use "git add" and/or "git commit -a") + git pull --rebase --autostash remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Compressing objects: 100% (2/2), done. remote: Total 2 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (2/2), 223 bytes | 13.00 KiB/s, done. From /Users/Philippe/Code/GIT-devel/BUGS/ggg-759-pull-autotash-untracked/test 1aa91d4..4f8c34c master -> origin/master Updating 1aa91d4..4f8c34c Created autostash: d5dffd9 error: The following untracked working tree files would be overwritten by merge: other Please move or remove them before you merge. Aborting + git status On branch master Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) Untracked files: (use "git add <file>..." to include in what will be committed) other nothing added to commit but untracked files present (use "git add" to track) + git stash list # empty! ~~~ Reverting 221ec24e9b (Merge branch 'fc/pull-cleanups', 2021-07-08) brings back the old behaviour (which is still buggy for --no-rebase). I noticed (by reading the code and checking) that the autostash is not completely lost, it's still pointed to by the MERGE_AUTOSTASH special ref, but this is ref is not documented (it's just mentioned without a clear definition). Cheers, Philippe. [1] https://github.com/gitgitgadget/git/issues/759