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开发。

comments powered by Disqus