-
Notifications
You must be signed in to change notification settings - Fork 20
Open
Labels
Description
写给那些刚接触github和开源贡献的你们。
Github贡献上游代码的基本流程:
1. Fork上游分支到你自己的仓库
2. 克隆代码到本地
git clone https://github.com/Yikun/spark.git3. 新增上游的远程分支
git remote add upstream https://github.com/apache/spark.git将apache/spark设置为远端分支,可以通过git branch -vva查看分支情况。
4. 创建开发分支
git checkout -b SPARK-123456 upstream/master在Apache社区,一般以JIRA的issue号作为分支名的标识,例如SPARK-123456代表Spark项目的JIRA为123456的问题。
为了方便开发,我们可以基于上游分支upstream/master创建SPARK-123456本地分支。
可以通过git branch -vva查看本地分支与远程分支的对应情况。
5. 同步上游代码。
git pull --rebase因为我们在第3、4步,已经建立了本地分支SPARK-123456和上游分支upstream/master的上下游关系,因此,这里我们只需要利用git pull --rebase即可完成上游分支upstream/master到本地分支SPARK-123456的代码同步。
6. 提交代码到自己的仓库的SPARK-123456
git push origin SPARK-123456将基于upstream/master(apache/spark)上游远程分支的本地分支SPARK-123456提交到自己仓库(Yikun/spark)的SPARK-123456分支
其他技巧
利用git alias组合常用命令
使用vim ~/.gitconfig修改[alias]section.
1. 快速下载PR git pr
pr = "!f() { git fetch -fu ${2:-$(git remote |grep ^upstream || echo origin)} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f"git pr 12: 快速将Pull Request ID为12的代码下载到本地
2. 快速同步上游 git sync-upstream
sync-upstream = !"git fetch upstream;git checkout master;git merge upstream/master;git push origin master"$ git sync-upstream
# git fetch upstream
remote: Enumerating objects: 384, done.
remote: Counting objects: 100% (329/329), done.
remote: Compressing objects: 100% (97/97), done.
remote: Total 384 (delta 187), reused 279 (delta 164), pack-reused 55
Receiving objects: 100% (384/384), 128.90 KiB | 1.42 MiB/s, done.
Resolving deltas: 100% (187/187), completed with 110 local objects.
From https://github.com/apache/spark
c0a3c0cbbe..eb08b9010a master -> upstream/master
# git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
# git merge upstream/master
Updating c0a3c0cbbe..eb08b9010a
Total 0 (delta 0), reused 0 (delta 0)
# git push origin master
To github.com:Yikun/spark.git
c0a3c0cbbe..eb08b9010a master -> mastergit sync-upstream: 同步上游分支的master到自己仓库的master
Peng-Lei and jq460494839
