Git 压缩功能分支提交的别名
Git alias to squash feature-branch commits
我经常在提交到 master 之前压缩功能分支上的所有提交。这是我目前所做的:
git checkout master
git merge --squash {branch}
git commit -m "{feature_summary}"
我可以使用 git 别名来执行此操作吗?我熟悉的别名(例如 stashes = stash list
或 uncommit = reset --soft HEAD~1
)不存储变量,在这种情况下,第二个命令需要知道我们 来自哪个分支 在命令的开头,所以我想必须存储此信息。
理想情况下,我想要一个 git 别名,例如 git squash
来执行所有这些命令。我可以接受字符串作为提交消息,也可以打开编辑器输入消息。
您可以使用 @{-1}
结构,意思是“最后签出的分支”,并将参数传递给临时 bash 函数:
# ms for merge-squash but call it as you prefer
git config --global alias.ms '!f() { git checkout master && git merge --squash @{-1} && git commit -m ""; }; f'
那么一个示例用法可以是,来自您的功能分支:
git ms "My commit message"
你可以create an alias yourself:
[alias]
sf = !git checkout master && git merge --squash "" && git commit -m ""
你可以运行它
git sf <branch> "<message>"
如果您的 PATH
中有一个名为 git-command
的程序,git
将在您调用 git command [args]
时使用该程序。
因此您可以将以下脚本添加到您的 PATH 中,将其命名为 git-squash
并使其可执行。
#!/bin/bash
branch=""
shift
git checkout master \
&& git merge --squash "${branch}" \
&& git commit "${@}"
我经常在提交到 master 之前压缩功能分支上的所有提交。这是我目前所做的:
git checkout master
git merge --squash {branch}
git commit -m "{feature_summary}"
我可以使用 git 别名来执行此操作吗?我熟悉的别名(例如 stashes = stash list
或 uncommit = reset --soft HEAD~1
)不存储变量,在这种情况下,第二个命令需要知道我们 来自哪个分支 在命令的开头,所以我想必须存储此信息。
理想情况下,我想要一个 git 别名,例如 git squash
来执行所有这些命令。我可以接受字符串作为提交消息,也可以打开编辑器输入消息。
您可以使用 @{-1}
结构,意思是“最后签出的分支”,并将参数传递给临时 bash 函数:
# ms for merge-squash but call it as you prefer
git config --global alias.ms '!f() { git checkout master && git merge --squash @{-1} && git commit -m ""; }; f'
那么一个示例用法可以是,来自您的功能分支:
git ms "My commit message"
你可以create an alias yourself:
[alias]
sf = !git checkout master && git merge --squash "" && git commit -m ""
你可以运行它
git sf <branch> "<message>"
如果您的 PATH
中有一个名为 git-command
的程序,git
将在您调用 git command [args]
时使用该程序。
因此您可以将以下脚本添加到您的 PATH 中,将其命名为 git-squash
并使其可执行。
#!/bin/bash
branch=""
shift
git checkout master \
&& git merge --squash "${branch}" \
&& git commit "${@}"