I would like to run
git reset *.foo
but this errors out.
I think I need to use a pipe, but I\'m not sure how to do this.
Th
for i in `git status --porcelain | grep '^D.*\.foo$' | sed 's/^D \+//'`; do
git reset HEAD "$i"
git checkout "$i"
done
In a Git GUI application like SmartGit I would filter the displayed files by the pattern *.foo
, press Ctrl+A to select all the filtered files and invoke the Unstage command.
White space in filename was causing problems using the git diff
approaches but the following worked:
find ./ -name "*.foo" -exec git reset {} \;
Execution is verbose if there are many files to be unstaged.
Simply use git reset *mypattern*
EDIT: Also try git restore, but be VERY careful as it seems to be bugged at the time of writing.
E.g. I want to match all "migrations" in path.
git diff --name-only | grep migrations | xargs git checkout
This should work in cygwin and unix env
git reset $(git diff --name-only --cached | grep *.foo)