Git alias, чтобы раздавить все коммиты с определенным сообщением - PullRequest
2 голосов
/ 22 ноября 2011

Я использовал этот псевдоним, который я получил из вопроса здесь:

wip = !f() { git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m "wip";}; f

Итак, теперь у меня есть последовательность из n коммитов, которые все содержат «wip» как сообщение о коммите.

Как мне создать псевдоним git, чтобы найти правильное количество коммитов обратно в дерево, содержащее "wip" и раздавить их? Это действительно возможно?

1 Ответ

1 голос
/ 22 ноября 2011

Вам, вероятно, потребуется интерактивно rebase и раздавить существующие wip коммиты.Поскольку rebase со сквошами изменит историю, это затрудняет (хотя и не делает невозможным) автоматизацию;Лучше всего rebase в каждом конкретном случае.После этого вы можете изменить псевдоним wip следующим образом:

git config --global alias.wip '!f() { git add -A; git ls-files --deleted -z | xargs -0 -r git rm; s=`git show --format=%s HEAD | head -1`; if [ "wip" = "$s" ]; then git commit --amend -m "wip"; else git commit -m "wip"; fi;}; f'

Это позволит избежать непрерывных wip коммитов в вашей истории.Псевдоним изменяется с вашего исходного псевдонима с помощью опции xargs -r , так что If the standard input is completely empty, do not run the command., а если текущий субъект HEAD - wip, используйте commit 's --amend.

...