以下命令在控制台中起作用:
git reset --soft `git rev-parse --abbrev-ref --symbolic-full-name @{u}` && git commit --edit -m "$(git log --format=%B --reverse HEAD..HEAD@{1})"
这意味着将未压缩的提交压缩为一个并提供编辑消息的机会。有关详细信息,请参阅Find out which remote branch a local branch is tracking和Squash my last X commits together using Git。
但是以下别名失败:
squash-uncomited = reset --soft `git rev-parse --abbrev-ref --symbolic-full-name @{u}` && git commit --edit -m "$(git log --format=%B --reverse HEAD..HEAD@{1})"
✗git squash-uncomited error:未知选项`abbrev-ref'
用法:git reset [--mixed | --soft | - 硬| --merge | --keep] [-q] []
或:git reset [-q] [ - ] ...或者:git reset --patch [] [ - ] [...]
为什么会这样?别名和CLI命令有什么区别?
答案 0 :(得分:1)
你在那里有一个完整的管道,而不仅仅是一个arglist重写。将<head>
放在它前面让git再次使用第一个命令!git
在shell中运行整个事物。