aiven'blog

openstack社区贡献简单技巧分享

最近做社区贡献,也慢慢熟悉了社区贡献的方法和技巧,这里就做一些简单的分享。本文主要分享社区贡献时代码提交需要注意的问题和Git的操作技巧。

在贡献社区时,一般一个Blueprints可能需要提交多个Commits来实现,但是有时候需要经常修改其中的某个Commits,这时候就需要使用Git的rebase功能。如

1
git rebase -i HEAD~5

该命令意思是从当前提交往前总共5个提交可能需要进行处理,之后进入提交的编辑页面,可以看到下面有帮助提示,这里需要注意的是,提交最上面的记录是最早的提交。

一般可以使用e来进行修改提交,需要修改哪个提交就把哪个的pick改为e。如果要删除某个提交就把其中的记录删掉。如果需要合并提交,则把需要合并到上一个提交的记录前面改为s或者f

处理完了之后,就可以使用--continue完成rebase操作。

1
git rebase --continue

有时候需要修改一些功能,这些功能可能是对应到多个commit的,但是为了方便,只在当前状态下进行修改,之后就需要将所有修改变动的文件提交到不同的commits里。这时候就需要用到stash

1
git stash -u -k

可以将当前所有未提交的内容都放在git的回收栈里。这时候就可以任意checkout到不同的分支等等。

1
git stash pop

这样可以将放进去的文件从栈里退出来,并且删掉栈里的信息。

因此我们可以利用这个特点和rebase配合来分批进行提交到不同的commits。这里的原则是,先处理最近的提交,之后按提交顺序从后往前处理,否则就会出现冲突等问题。比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git stash -u -k
git rebase -i HEAD~2
git stash pop
git add xxx
git commit --amend
git stash -u -k
git rebase --continue
git rebase -i HEAD~3
git stash pop
git add xxx
git commit --amend
git stash -u -k
git rebase --continue

都处理完了之后就可以提交社区了

1
git review

这时候多个commits的改变会一次性提交,输入yes即可。

热评文章