Да.Страница man git filter-branch
предоставляет готовый пример: это удаляет все коммиты из "Darl McBribe" из рабочего дерева (в вашем случае это будет User1
).
git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_NAME" = "Darl McBribe" ];
then
skip_commit "$@";
else
git commit-tree "$@";
fi' HEAD
где функция skip_commit
определяется следующим образом:
skip_commit()
{
shift;
while [ -n "$1" ];
do
shift;
map "$1";
shift;
done;
}
Но, как всегда, при изменении истории вашего репо: если кто-то вытащил репо до того, как вы его изменили, у него будут проблемы .