Ich versuche eine ziemlich komplexe git Geschichte Beschneidung und fehlgeschlagen, um einen Befehl zu finden, der mit git filter-branch
funktioniert. Im Wesentlichen möchte ich alles außer ein paar übereinstimmenden Dateien und Verzeichnissen entfernen.Inverted Shell Globbing innerhalb Git Filter-Zweig
Der Befehl Ich mag würde laufen ist effektiv
git filter-branch -f --prune-empty --tree-filter 'rm -rf ^(FileA.java|dirB)' HEAD
Aber der git-filter-branch
Skript barfs auf den Pars.
/usr/local/Cellar/git/HEAD/libexec/git-core/git-filter-branch: eval: line 360: syntax error near unexpected token `('
/usr/local/Cellar/git/HEAD/libexec/git-core/git-filter-branch: eval: line 360: `rm -rf ^(FileA.java|dirB)'
tree filter failed: rm -rf ^(FileA.java|dirB)
würde ich eval
erwartet habe die eingebetteten Pars gut zu handhaben, aber das ist auch jenseits meiner Schale/zsh Verständnis.
Und der säumige Code in git-filter-branch
if [ "$filter_tree" ]; then
git checkout-index -f -u -a ||
die "Could not checkout the index"
# files that $commit removed are now still in the working tree;
# remove them, else they would be added again
git clean -d -q -f -x
eval "$filter_tree" < /dev/null ||
die "tree filter failed: $filter_tree"