Git flow的工作流中有一个动作叫做开一个pr(pull request),意思是做完某个变动后,请求大家review这个变动,都没问题就合并到主干上。
这是非常常见的场景了,如何简化一下它呢?
以GitHub为例,先看一个alias:
[alias]
pr= "!apply_pr() { set -e;
rm -f githubpr.patch;
wget $1.patch -O githubpr.patch
--no-check-certificate;
git am -s githubpr.patch;
rm -f githubpr.patch;
pr_num=$(echo $1 | sed 's/.*pull\\///');
git log -1 --pretty=%B > prmsg.txt;
echo \"This closes #$pr_num\" >>
prmsg.txt; git commit --amend -m \"$(cat prmsg.txt)\";
rm prmsg.txt; }; apply_pr"
一般情况下,我们把他放在'~/.gitconfig',一行流:
[alias]
pr= "!apply_pr() { set -e; rm -f githubpr.patch; wget $1.patch -O githubpr.patch --no-check-certificate; git am -s githubpr.patch; rm -f githubpr.patch; pr_num=$(echo $1 | sed 's/.*pull\\///'); git log -1 --pretty=%B > prmsg.txt; echo \"This closes #$pr_num\" >> prmsg.txt; git commit --amend -m \"$(cat prmsg.txt)\"; rm prmsg.txt; }; apply_pr"
接下来我们可以这么使用它:
git pr https://pull-request-url
比如:
git pr https://github.com/apache/cloudstack-docs-rn/pull/21
这样会把pr的变动抓回来,给pr增加一个注释并关闭它,把变动合并到当前主干上。查看没问题后直接提交主干就算解决了这个pr了。
完整的例子 https://github.com/rhtyd/dotfiles/blob/master/git/gitconfig
里面有很多alias,我们可以充分利用来简化我们的git开发。