We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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和开源贡献的你们。
git clone https://github.com/Yikun/spark.git
git remote add upstream https://github.com/apache/spark.git
将apache/spark设置为远端分支,可以通过git branch -vva查看分支情况。
git branch -vva
git checkout -b SPARK-123456 upstream/master
在Apache社区,一般以JIRA的issue号作为分支名的标识,例如SPARK-123456代表Spark项目的JIRA为123456的问题。 为了方便开发,我们可以基于上游分支upstream/master创建SPARK-123456本地分支。 可以通过git branch -vva查看本地分支与远程分支的对应情况。
SPARK-123456
upstream/master
git pull --rebase
因为我们在第3、4步,已经建立了本地分支SPARK-123456和上游分支upstream/master的上下游关系,因此,这里我们只需要利用git pull --rebase即可完成上游分支upstream/master到本地分支SPARK-123456的代码同步。
git push origin SPARK-123456
将基于upstream/master(apache/spark)上游远程分支的本地分支SPARK-123456提交到自己仓库(Yikun/spark)的SPARK-123456分支
使用vim ~/.gitconfig修改[alias]section.
vim ~/.gitconfig
[alias]
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的代码下载到本地
git pr 12
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
The text was updated successfully, but these errors were encountered:
High quality notes!
Sorry, something went wrong.
After added upstream, we should type "git pull upstream" before create a new branch.
No branches or pull requests
写给那些刚接触github和开源贡献的你们。
Github贡献上游代码的基本流程:
1. Fork上游分支到你自己的仓库
2. 克隆代码到本地
3. 新增上游的远程分支
将apache/spark设置为远端分支,可以通过
git branch -vva
查看分支情况。4. 创建开发分支
在Apache社区,一般以JIRA的issue号作为分支名的标识,例如
SPARK-123456
代表Spark项目的JIRA为123456的问题。为了方便开发,我们可以基于上游分支
upstream/master
创建SPARK-123456
本地分支。可以通过
git branch -vva
查看本地分支与远程分支的对应情况。5. 同步上游代码。
因为我们在第3、4步,已经建立了本地分支
SPARK-123456
和上游分支upstream/master
的上下游关系,因此,这里我们只需要利用git pull --rebase
即可完成上游分支upstream/master
到本地分支SPARK-123456
的代码同步。6. 提交代码到自己的仓库的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
: 同步上游分支的master到自己仓库的masterThe text was updated successfully, but these errors were encountered: