以下操作流程是我(Liigo)过去半年来收集、整理、总结,并经过许多次实践检验的。
如果有朋友希望给Rust项目贡献源代码,却不知道如何入手,可以参考一下本文。
Start contributing to #rustlang
1. Fork it at https://github.com/rust-lang/rust
2. Git clone your fork: git clone https://github.com/liigo/rust.git
3. Config remote upstream: git remote add upstream git://github.com/rust-lang/rust.git
4. Set global user info:
git config --global user.name "Liigo Zhuang"
git config --global user.email com.liigo@gmail.com
5. Start work:
git fetch upstream
git checkout -b workbranch master (the first time)
or git checkout workbranch
(do your work: changes and commits)
make && make check (run test suites)
6. Push to your fork (origin) : git push origin workbranch
7. File pull request on github.com, and wait for be merged
8. Delete branches (optional):
git push origin :workbranch (delete remote branch)
git branch -D workbranch (delete local branch)
Squash many commits to one commit:
git checkout workbranch
git rebase -i upstream/master (non-first 'pick' -> 's')
git push origin workbranch
or git push -f (to force push)
Update pull request:
git checkout workbranch
(commit and rebase)
git push
or git push -f (to force push)
Keep origin/master up to date:
git fetch upstram
git checkout master
git rebase upstream/master
git push origin master
Refs:
[fork] https://help.github.com/articles/fork-a-repo
[PR] https://help.github.com/articles/using-pull-requests
[git] https://github.com/mozilla/rust/wiki/Note-git-workflow
[dev] https://github.com/mozilla/rust/wiki/Note-development-policy
[squash] http://git-scm.com/book/en/Git-Tools-Rewriting-History
[squash] http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html