Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何在上游贡献代码(Github篇)? #89

Open
Yikun opened this issue Apr 27, 2021 · 2 comments
Open

如何在上游贡献代码(Github篇)? #89

Yikun opened this issue Apr 27, 2021 · 2 comments

Comments

@Yikun
Copy link
Owner

Yikun commented Apr 27, 2021

写给那些刚接触github和开源贡献的你们。

Github贡献上游代码的基本流程:

1. Fork上游分支到你自己的仓库

image

2. 克隆代码到本地

git clone https://github.com/Yikun/spark.git

3. 新增上游的远程分支

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 -> master

git sync-upstream: 同步上游分支的master到自己仓库的master

@Yikun Yikun added the Draft label Apr 27, 2021
@Peng-Lei
Copy link

High quality notes!

@bolin3540
Copy link

After added upstream, we should type "git pull upstream" before create a new branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants