Вам, вероятно, потребуется интерактивно 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
.